Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Есть таблица продаж, следующего вида: Дата , Склад, Товар, Сумма Нужно запросом получить Первые десять товаров, которые приняли наибольшее участие в выручке каждого дня - и так по каждому складу. Первый сюприз для меня был в невозможности использование подзапросов в секции FROM. Второй - в невозможности использовать несколько MULTISET. Раньше лазил через ODBC-драйвер - особых проблем не возникало (понятно почему), теперь пытаюсь получить информацию через JDBC - и с "родными" запросами получается не так гладко. Пока вот что накрутил: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2007, 21:44 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Я бы для данного запроса написал бы хранимую процедурку... Не очень представляю как вы в рамках обычного sql будете выбирать первые 10 суммарных значений по каждому складу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 09:13 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Артур.Не очень представляю как вы в рамках обычного sql будете выбирать первые 10 суммарных значений по каждому складу...Написать-то такой запрос - не проблема. Порблема - просадка производительности, вызванная такого рода запросом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 09:33 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Я не уверен - позволит ли INFORMIX корреляцию в MULTISET. Вот и обращаюсь за помощью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 10:32 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringer Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. напишите GROUP BY t_from, t_date,t_kod,4 ORDER BY 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 11:06 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Если пойти на компромисс, и задать постоянное количество складов, то можно попытаться обойтись банальным UNION-ом, но хочется же по уму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 11:55 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Это олап. Информикс не умеет олап, заваривать чай и бегать за пивом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 12:40 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Не понял Где Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 13:10 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
2 Журавлев Денис Да какой же это ОЛАП... Я не пробовал, но схема запроса, скажем, в ORACLE мне ясна. 2 АнатоЛой Так не дошёл я до этого вообще. В сервер INFORMIX-а влезать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 13:24 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Что-то совсем всё невесело. Код: plaintext Код: plaintext Код: plaintext Что ж делать-то??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 13:51 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerЧто-то совсем всё невесело. Код: plaintext Код: plaintext Код: plaintext Что ж делать-то??? если б вы сделали тест, всем было бы легче вам помогать. в GROUP BY должен быть включен на самом деле не весь столбец, а та составляющая, которая не является агрегатом - это поле mySUM т.е. если вы напишите так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 14:36 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Как бы там не было - это лишь полумера - мне же нужно по всем складам за последние тридцать дней (за каждую дату). Если INFORMIX такого не может (одним запросом) - тады ой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 14:42 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Бабичев Сергей Артур.Не очень представляю как вы в рамках обычного sql будете выбирать первые 10 суммарных значений по каждому складу...Написать-то такой запрос - не проблема. Порблема - просадка производительности, вызванная такого рода запросом Ну так подскажите, а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 15:44 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Ладно, чёрт с ними, со складами - пропишу руками. Ну а хотя бы по датом такое можно нарисовать? Скажем - за десять последних.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 16:21 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Вопрос, а что собственно мешает ХП написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 17:41 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Сервер и вся информационная система находится на обслуживании. Когда мы просили предоставить возможность хотя бы просто читать инфу - было много охов и ахов. Если я вылезу с просьбами о хранимках и прочем - они начнут бросаться заявлениями "Снимаем с себя всю ответственность!". А на это никто не пойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 17:53 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerКак бы там не было - это лишь полумера - мне же нужно по всем складам за последние тридцать дней (за каждую дату). Если INFORMIX такого не может (одним запросом) - тады ой. А почему обязательно одним запросом ? В Инфоримксе есть прекрасное средство - временные таблицы. Сделайте сначала выборку туда, а затем выполняйте все необходимые операции. Если данных много - можно даже индекс построить. И работать будет быстрее с временной таблицей. И ухаживать за ними особо не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 20:41 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerЕсть таблица продаж, следующего вида: Дата , Склад, Товар, Сумма Нужно запросом получить Первые десять товаров, которые приняли наибольшее участие в выручке каждого дня - и так по каждому складу. Первый сюприз для меня был в невозможности использование подзапросов в секции FROM. Второй - в невозможности использовать несколько MULTISET. Раньше лазил через ODBC-драйвер - особых проблем не возникало (понятно почему), теперь пытаюсь получить информацию через JDBC - и с "родными" запросами получается не так гладко. Пока вот что накрутил: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 1. create view mySUM as SELECT t_from AS myStore, t_date AS myDATE, t_kod AS TOV, Sum(t_sum) AS mySUM FROM s_total WHERE t_date BETWEEN (TODAY - 31 UNITS DAY) AND (TODAY) GROUP BY t_from, t_date 2. select a.myStore, a.myDate, a.TOV, a.mySum from mySum A where (select count(*) from mySum B where a.myStore = b.myStore and a.myDate = b.myDate and a.mySum < b.mySum) < 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 22:07 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
2 Выбегалло На самом деле - исходная таблица такова, что полностью соответсвует первому пункту. Второй же мне пока не осилить - 10 минут уже медитирую. Осталось только попытаться, если сработает - просто нет слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 22:21 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Понял. Но такого бы я не выдумал - это INFORMIX к такому толкает? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2007, 22:24 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerНу так подскажите, а? Вот тебе вариант реализации под Oracle, но с использованием конструкций, совместимых с ANSI SQL-92: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. Informix я в глаза не видел, но судя по краткому прочтению нескольких топиков, решение примет примерно такой вид (если ошибся где-то в синтаксисе, то пусть местные корифеи подправят меня): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Но хочу предупредить, что данный запрос относится к так называемым slow-by-slow алгоритмам, скорость и объем работы которых оставляет желать лучшего... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 07:01 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Спасибо, господа. Наверняка теперь к чему-нибудь приду. Хочу сказать, что "slow-by-slow" - это не то слово... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 11:03 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerПонял. Но такого бы я не выдумал - это INFORMIX к такому толкает? ;) Когда не было всяких рюшечек типа "FIRST 10" то это был стандартный способ для выборки в стандартном запросе нужного количества строк (без использования процедуры). Хотя на самом деле, такое изящество нужно было крайне редко. У нас, например, много лет назад использовалось в одном из тестов по SQL, но так как почти никто не отвечал на этот вопрос, то пришлось его исключить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 11:54 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
2 Бабичев Сергей Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 12:04 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringer2 Бабичев Сергей Код: plaintext Про нечисловую природу кода - не понял. А что, в Informix-е строки сравнивать между собой нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 12:43 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Бабичев СергейА что, в Informix-е строки сравнивать между собой нельзя? Конечно же можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 13:00 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
А если несколько товаров дали в один день одну и ту же выручку? Я не нашёл, где надо построить отчёт - в разрабатываемом приложении или в отчётной системе? Если первое, то проблем с использованием временных таблиц быть не должно. Если товаров сотни тысяч наименований, я бы написал примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Извините, если где-то ошибки в синтаксисе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 14:34 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Иэх, господа - это всё здорово, но такие запросы не возвращают результата. Запрос отсылается на сервер, в течении семидесяти минут не было ответа - потом я выключил. Обрабатывал пять дней, записей в таблице за этот период - 416 184. Очень жаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 14:50 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
70 минут? Попробуйте мой запросик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 14:52 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Я так понимаю, что конструкция Код: plaintext в принципе нежизнеспособна. 400 000 строк, в квадрате - 16 и десять нулей (обрабатываемые строки) - а сервер не сдохнет, "как та корова"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 15:17 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Забавно, но накатать такой запрос с ручным обходом по складам и датам - будет НАСТОЛЬКО дешевле для сервера, что даже рядом не стояло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 15:19 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Угу, не стояло. Бдительный INFORMIX не даёт делать UNION и использовать FIRST в SELECT выражениях. Также не даёт использовать FIRST в table(multiset()). Я просто в шоке. Я даже попытался сырые данные о продажах в ORACLE перетянуть, чтобы там уже обрабатывать, но это слишком долго тянется. У меня подозрение, что для достижения искомой цели мне придётся забирать данные отдельными запросами, для каждого склада, и для каждой даты - в рамках одного коннекта - обалдеть. Два дня уже убил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 18:01 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerУгу, не стояло. Бдительный INFORMIX не даёт делать UNION и использовать FIRST в SELECT выражениях. Также не даёт использовать FIRST в table(multiset()). Я просто в шоке. Я даже попытался сырые данные о продажах в ORACLE перетянуть, чтобы там уже обрабатывать, но это слишком долго тянется. У меня подозрение, что для достижения искомой цели мне придётся забирать данные отдельными запросами, для каждого склада, и для каждой даты - в рамках одного коннекта - обалдеть. Два дня уже убил. Во-первых, не знаю какой у вас сервер, а у меня лаптоп вернул результаты для 400,000 записей за 10 минут : --------- create table s_total ( t_from char(30), t_date date, t_kod int, t_sum money(10,2) ); create procedure ins_total (n int); define i int; define j int; define k int; define l int; for i = 1 to n LET l= mod(i, 20); LET j = mod(i,30); LET k = mod(i, 100); insert into s_total values (l, today - j UNITS DAY, k, i); end for; end procedure; call ins_total (400000) create view mySUM (mystore, mydate, tov, mysum) as SELECT t_from, t_date, t_kod, Sum(t_sum) FROM s_total WHERE t_date BETWEEN (TODAY - 31 UNITS DAY) AND (TODAY) GROUP BY t_from, t_date, t_kod --------- sel.sql ------ database dbase; select a.myStore, a.myDate, a.TOV, a.mySum from mySum A where (select count(*) from mySum B where a.myStore = b.myStore and a.myDate = b.myDate and a.mySum < b.mySum) < 10 -------- /home/xxx>time dbaccess - sel.sql > /dev/null Database selected. 300 row(s) retrieved. Database closed. real 10m22.572s user 0m0.015s sys 0m0.031s ----------------- Во-вторых, есть обходной вариант для очень быстрого выполнения, которым я пользовался в подобной ситуации : --------------- Variant 2 ------------ create temp table temp_t1 ( mystore char(30), mydate date, tov int, mysum money(15,2) ); create temp table temp_res ( mystore char(30), mydate date, tov int, mysum money(15,2) ); /* create a copy of summarized data */ insert into temp_t1 SELECT t_from as mystore, t_date as mydate, t_kod as tov, Sum(t_sum) as mysum FROM s_total WHERE t_date BETWEEN (TODAY - 31 UNITS DAY) AND (TODAY) GROUP BY t_from, t_date, t_kod; /* find tovar with max mysum for each day, each store */ select mystore, mydate, max(mysum) mysum from temp_t1 group by mystore, mydate into temp temp_t3; /* 1st place */ insert into temp_res select a.mystore, a.mydate, a.tov, a.mysum from temp_t1 a, temp_t3 b where a.mystore= b.mystore and a.mydate = b.mydate and a.mysum = b.mysum; delete from temp_t1 where exists (select 1 from temp_res where temp_t1.mystore= temp_res.mystore and temp_t1.mydate = temp_res.mydate and temp_t1.mysum = temp_res.mysum); /* 2nd place */ drop table temp_t3; select mystore, mydate, max(mysum) mysum from temp_t1 group by mystore, mydate into temp temp_t3; insert into temp_res select a.mystore, a.mydate, a.tov, a.mysum from temp_t1 a, temp_t3 b where a.mystore= b.mystore and a.mydate = b.mydate and a.mysum = b.mysum; delete from temp_t1 where exists (select 1 from temp_res where temp_t1.mystore= temp_res.mystore and temp_t1.mydate = temp_res.mydate and temp_t1.mysum = temp_res.mysum); /* 3rd place */ drop table temp_t3; select mystore, mydate, max(mysum) mysum from temp_t1 group by mystore, mydate into temp temp_t3; insert into temp_res select a.mystore, a.mydate, a.tov, a.mysum from temp_t1 a, temp_t3 b where a.mystore= b.mystore and a.mydate = b.mydate and a.mysum = b.mysum; delete from temp_t1 where exists (select 1 from temp_res where temp_t1.mystore= temp_res.mystore and temp_t1.mydate = temp_res.mydate and temp_t1.mysum = temp_res.mysum); /* 4 place */ drop table temp_t3; select mystore, mydate, max(mysum) mysum from temp_t1 group by mystore, mydate into temp temp_t3; insert into temp_res select a.mystore, a.mydate, a.tov, a.mysum from temp_t1 a, temp_t3 b where a.mystore= b.mystore and a.mydate = b.mydate and a.mysum = b.mysum; delete from temp_t1 where exists (select 1 from temp_res where temp_t1.mystore= temp_res.mystore and temp_t1.mydate = temp_res.mydate and temp_t1.mysum = temp_res.mysum); /* 5 place */ drop table temp_t3; select mystore, mydate, max(mysum) mysum from temp_t1 group by mystore, mydate into temp temp_t3; insert into temp_res select a.mystore, a.mydate, a.tov, a.mysum from temp_t1 a, temp_t3 b where a.mystore= b.mystore and a.mydate = b.mydate and a.mysum = b.mysum; delete from temp_t1 where exists (select 1 from temp_res where temp_t1.mystore= temp_res.mystore and temp_t1.mydate = temp_res.mydate and temp_t1.mysum = temp_res.mysum); /* 6 place */ drop table temp_t3; select mystore, mydate, max(mysum) mysum from temp_t1 group by mystore, mydate into temp temp_t3; insert into temp_res select a.mystore, a.mydate, a.tov, a.mysum from temp_t1 a, temp_t3 b where a.mystore= b.mystore and a.mydate = b.mydate and a.mysum = b.mysum; delete from temp_t1 where exists (select 1 from temp_res where temp_t1.mystore= temp_res.mystore and temp_t1.mydate = temp_res.mydate and temp_t1.mysum = temp_res.mysum); /* 7 place */ drop table temp_t3; select mystore, mydate, max(mysum) mysum from temp_t1 group by mystore, mydate into temp temp_t3; insert into temp_res select a.mystore, a.mydate, a.tov, a.mysum from temp_t1 a, temp_t3 b where a.mystore= b.mystore and a.mydate = b.mydate and a.mysum = b.mysum; delete from temp_t1 where exists (select 1 from temp_res where temp_t1.mystore= temp_res.mystore and temp_t1.mydate = temp_res.mydate and temp_t1.mysum = temp_res.mysum); /* 8 place */ drop table temp_t3; select mystore, mydate, max(mysum) mysum from temp_t1 group by mystore, mydate into temp temp_t3; insert into temp_res select a.mystore, a.mydate, a.tov, a.mysum from temp_t1 a, temp_t3 b where a.mystore= b.mystore and a.mydate = b.mydate and a.mysum = b.mysum; delete from temp_t1 where exists (select 1 from temp_res where temp_t1.mystore= temp_res.mystore and temp_t1.mydate = temp_res.mydate and temp_t1.mysum = temp_res.mysum); /* 9 place */ drop table temp_t3; select mystore, mydate, max(mysum) mysum from temp_t1 group by mystore, mydate into temp temp_t3; insert into temp_res select a.mystore, a.mydate, a.tov, a.mysum from temp_t1 a, temp_t3 b where a.mystore= b.mystore and a.mydate = b.mydate and a.mysum = b.mysum; delete from temp_t1 where exists (select 1 from temp_res where temp_t1.mystore= temp_res.mystore and temp_t1.mydate = temp_res.mydate and temp_t1.mysum = temp_res.mysum); /* 10 place */ drop table temp_t3; select mystore, mydate, max(mysum) mysum from temp_t1 group by mystore, mydate into temp temp_t3; insert into temp_res select a.mystore, a.mydate, a.tov, a.mysum from temp_t1 a, temp_t3 b where a.mystore= b.mystore and a.mydate = b.mydate and a.mysum = b.mysum; delete from temp_t1 where exists (select 1 from temp_res where temp_t1.mystore= temp_res.mystore and temp_t1.mydate = temp_res.mydate and temp_t1.mysum = temp_res.mysum); select * from temp_res; ---------- 300 row(s) retrieved. Database closed. real 0m3.591s user 0m0.031s sys 0m0.015s Инджой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2007, 19:36 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Выбегалло ... real 0m3.591s user 0m0.031s sys 0m0.015s Инджой Выбегалло, мои бурные аплодисменты (надеюсь, что и остальных тоже). За потраченное время на написание кода и тестирование и за отстаивание чести Информикса, в которой некоторые несправедливо начали сомневаться :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2007, 20:08 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
За потраченное время - огромная признательность, но отстаивание чести - вот этой простыней? Мой сервер - это два XEON-а - почему-то 10 минут для него мало. Мой проект этим вот запросом не заканчивается, а я со страхом думаю о следующих задачах - там то что будет? Смотрите, таблица: Код: plaintext USERID - ID пользователя NAMEOFSTATE - Название состояния пользователя (Перечисление,задано один раз, вида: "На рабочем месте","Отсутсвует","Отключен","Отсутсвует AUTO") STARTOFSTATE - Начало состояния пользователя (Дата/время) NUMBEROFSTATE - порядковый номер состояния, растёт в пределах юзера, строго +1 (можно было бы от этого столбца отказаться, но оставлен ради упрощения.) Исходя из 8-ми часового рабочего дня - надо вывести таблицу вида: Код: plaintext 1. 2. В ORACLE это один запрос. В INFORMIX-е наверное тоже можно понасоздавать таблиц, да вот только у моего пользователя нет на это прав. Только на SELECT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2007, 02:07 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerЗа потраченное время - огромная признательность, но отстаивание чести - вот этой простыней? Мой сервер - это два XEON-а - почему-то 10 минут для него мало. Мой проект этим вот запросом не заканчивается, а я со страхом думаю о следующих задачах - там то что будет? Смотрите, таблица: Код: plaintext USERID - ID пользователя NAMEOFSTATE - Название состояния пользователя (Перечисление,задано один раз, вида: "На рабочем месте","Отсутсвует","Отключен","Отсутсвует AUTO") STARTOFSTATE - Начало состояния пользователя (Дата/время) NUMBEROFSTATE - порядковый номер состояния, растёт в пределах юзера, строго +1 (можно было бы от этого столбца отказаться, но оставлен ради упрощения.) Исходя из 8-ми часового рабочего дня - надо вывести таблицу вида: Код: plaintext 1. 2. В ORACLE это один запрос. В INFORMIX-е наверное тоже можно понасоздавать таблиц, да вот только у моего пользователя нет на это прав. Только на SELECT. Ну несите ваш оракловский запрос. Не исключено, что с минимальными переделками (или совсем без ) он будет работать на информиксе. Я бы вам нарисовал запрос, но непонятно что такое "отсуствует AUTO" и "отключен". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2007, 05:08 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
В контексте условия - "отсуствует AUTO" и "отключен" эквивалентно "отсутвствует". Но спорить я не буду, поскольку в вашем профессионализме не сомневаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2007, 10:34 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerЗа потраченное время - огромная признательность, но отстаивание чести - вот этой простыней? ... В INFORMIX-е наверное тоже можно понасоздавать таблиц, да вот только у моего пользователя нет на это прав. Только на SELECT. 1. Не бывает в Informix пользователей, у которых нет права создавать временные таблицы. 2. Человек старался вам помочь, тратил время и силы, а вы даже не попробовали то, что он вам предложил. ну подождите, может еще кто захочет помочь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 09:13 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Пф-ф-ф, вот только совестить меня не надо. Такие простыни я могу накатать где угодно и на стороне какой угодно, РЕШЕНИЕМ это назвать можно с большой натяжкой. Как вариант - поставить рядом с INFORMIX-ом в одной локалке ORACLE XE, и тянуть в него сырые данные, и обрабатывать уже в ORACLE. Я выбираю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 10:38 |
|
||
|
Помогите написать запрос, пожалуйста..
|
|||
|---|---|---|---|
|
#18+
Cold bringerПф-ф-ф, вот только совестить меня не надо. Такие простыни я могу накатать где угодно и на стороне какой угодно, РЕШЕНИЕМ это назвать можно с большой натяжкой. Как вариант - поставить рядом с INFORMIX-ом в одной локалке ORACLE XE, и тянуть в него сырые данные, и обрабатывать уже в ORACLE. Я выбираю. Хочется лечить геморрой через рот, а гланды удалять через задницу - дело ваше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 18:17 |
|
||
|
|

start [/forum/topic.php?all=1&fid=44&tid=1608276]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 411ms |

| 0 / 0 |
