|
|
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! `В базе имеется таблицы:incomes,sales,Products. Задача следуюшая- в query вывести: 1. sum(incomes) 2. sum(sales) 3. количество товаров сейчас: a-b таблица 'incomes' имеет столбцы:Incomeid,ProductId,quant(количество прыходов)... таблица 'sales' имеет столбцы: SalesId, IncomeId, ProductId, quant(количество продаж товара) ... пишу SQL: select i.productId, sum(i.quant) as iq, sum(s.quant) as sq from income i,sales s* where (i.incomeId=s.incomeId) group by i.productId или select i.productId, sum(i.quant) as iq, sum(s.quant) as sq from income left outer join s on (i.IncomeId=s.IncomeId) group by i.productId но вместо того чтобы вывести: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. спасибо заранее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 20:04 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Davidkokodatabase server- Interbase 2009. В котором нет ни derived tables, ни CTE. Если уберёшь третий пункт и разницу будешь считать непосредственно при выводе - можешь обойтись подзапросами. Иначе - хранимая процедура или монстровитый union all с последующим group by. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 20:21 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDavidkokodatabase server- Interbase 2009. В котором нет ни derived tables, ни CTE. Если уберёшь третий пункт и разницу будешь считать непосредственно при выводе - можешь обойтись подзапросами. Иначе - хранимая процедура или монстровитый union all с последующим group by. без третьего пункта тоже не смог решить. А если перевести базу в Firebird 2.5? поможет (derived tables и CTE)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 20:30 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
DavidkokoА если перевести базу в Firebird 2.5? Тогда у тебя они будут в распоряжении и запрос станет простым и элегантным. Но если ты с такой лёгкостью можешь манипулировать базой, то проще будет объединить эти две таблицы в одну. Тогда запрос вообще станет тривиальным. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 20:34 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDavidkokoА если перевести базу в Firebird 2.5? Тогда у тебя они будут в распоряжении и запрос станет простым и элегантным. Но если ты с такой лёгкостью можешь манипулировать базой, то проще будет объединить эти две таблицы в одну. Тогда запрос вообще станет тривиальным. Dimitry Sibiryakov, огромнейшее спасибо! проверил в Firebird 2.5 и все правильно работает, и разницу sum(income)-sum(sales) считивает. если можно еще одинь вопрос:что вы имели ввиду когда писали: "проще будет объединить эти две таблицы в одну"? я всегда думал что в целях нормализации БД sales и incomes обьязательно должни быть в отдельных таблицах! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 21:54 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Davidkokoчто вы имели ввиду когда писали: "проще будет объединить эти две таблицы в одну"? я всегда думал что в целях нормализации БД sales и incomes обьязательно должни быть в отдельных таблицах! И какую же нормальную форму ты пытаешься воплотить в жизнь разделяя одну сущность "движение средств" на две таблицы?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 22:02 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDavidkokoчто вы имели ввиду когда писали: "проще будет объединить эти две таблицы в одну"? я всегда думал что в целях нормализации БД sales и incomes обьязательно должни быть в отдельных таблицах! И какую же нормальную форму ты пытаешься воплотить в жизнь разделяя одну сущность "движение средств" на две таблицы?.. еще раз спасибо, я много раз думал об этом, но никак не мог рисковать. Вы мне очен помогли! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2014, 22:17 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
народ подскажите как сумму выбрать? фб 1.5 Код: sql 1. 2. 3. 4. Can't format message 13:896 -- message system code -4. Dynamic SQL Error. SQL error code = -104. Invalid expression in the ORDER BY clause (not contained in either an aggregate function or the GROUP BY clause). (3,058 с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 11:45 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, накой тебе ORDER BY при подсчёте одной единственной суммы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 11:52 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
order был лишним Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 11:53 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, спс. Сам увидел. просто из более сложного запроса осталось)))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 11:54 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
млин объясните нубу. вот этот запрос намертво ложит емс Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. вложенный запрос отрабатывает хоть и медленно (3 с), но корректно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 12:46 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 12:55 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, по мелочи D + T сделай уже вычисляемый столбец DT как D+T, чтобы не писать постоянно D+T FROM PROTOKOL left outer join CARGO CARGO1 либо не пиши алиасы совсем, либо пиши везде. from protocol p left join cargo c тут точно нужен left join? des1roerвложенный запрос отрабатывает хоть и медленно (3 с), но корректно вложенный запрос сначала выполняется целиком, потому что order by D + T desc приводит к PLAN SORT, т.е. сначала запрос выполнится, и отсортируется результат, а потом только будет выбрана его первая запись (first). И "намертво ложит емс" - емс тут ни при чем, он просто ждет ответа от сервера, а запрос выполняется очень долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 12:56 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, сам виноват. Этот запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. наверняка не использует индекс. Попробуй создать вычисляемый индекс по D + T. По поводу запроса в целом. Такие подзапросы не материализуются, а следовательно будут перевыполняться на каждой итерации. Поэтому твои 3 сек будут умножены на количество записей основного запроса. Хранимая процедура или EB в котором эти запросы разделены на 2 поможет. Для понимания поможет вот эта статейка http://www.ibase.ru/devinfo/dataaccesspaths.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 12:56 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
что за вычисляемый индекс д+т? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 13:01 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2014, 13:08 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. так что ли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 11:47 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, вроде того. А ещё лучше если добавить в таблицу обычный столбец типа TIMESTAMP и вычислять его в триггерах before insert, before update. Тогда можно будет обычный индекс вешать, да и запрос упростится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 11:51 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
таблица не моя - единственное что могу - это дергать селектом. может ну его в болото, ложить в постгрес и уж оттуда выгребать нужные данные... млин а индекс не положит базу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 11:57 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, индекс не может положить базу. Разве что вставка записей немного замедлится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 11:59 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, вот этот блок поможет Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 12:07 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, прошу заметить у меня какашка firebird 1.5. Ругается Can't format message 13:896 -- message system code -4. Dynamic SQL Error. SQL error code = -104. Token unknown - line 1, column 9. BLOCK. (3,417 с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 12:23 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
тогда делай процедуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 12:28 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
ну его на кол этот таймстамп Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ------ QUERY PERFORMANCE ------ Prepare : 16 мс Execute : 31 мс Avg fetch time: 23 мс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 12:45 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, вычисляемый индекс помог? FIRST 1 D + T в основном запросе без ORDER BY D + T (ASC или DESC) может дать бредятину ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 12:53 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
у меня фб на него ругается. без него ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:11 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
ой че опять за бида Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. как вычесть два числа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:12 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:18 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
ясно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:20 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, спасибо, у вас как-то симпотишней решение выглядит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:21 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roerу вас как-то симпотишней решение выглядит Лично меня тошнит от обоих. Я бы использовал CASE и никаких подзапросов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:33 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, я не думал. Лень ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:38 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, и как же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:50 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:55 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roerи как же ну как-то вот так Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 13:55 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
m7m and NAME_CARGO in ('ГБРУ', 'ГБРУ порожняк') Не факт, что это условие нужно здесь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 14:10 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovm7m and NAME_CARGO in ('ГБРУ', 'ГБРУ порожняк') Не факт, что это условие нужно здесь. Да я без понятия, что там нужно и что нет. И не особо оно меня интересует. он хотел пример сумм с кэйсом я ему его и нарисовал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 14:46 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
как правильно записать? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 11:05 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roerкак правильно записать? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. А чем это отличается от предыдущего???? ps/ - Использовать параметры - изменить малость структуры таблиц дабы не писать каждый раз NAME_CARGO = 'чего-то там' NAME_CARGO = 'чего-то там порожняк' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 11:22 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, этот запрос вообще бредовый. Код: sql 1. тут не тот алиас используется в условии соединения Код: sql 1. нельзя связывать два подзапроса в основном запросе Учи SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 11:28 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
да понял как надо Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 11:43 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
des1roer, ах да. Если есть условие по которому идёт фильтрация, то OUTER JOIN явно не нужен. NAME_CARGO относится к таблице CARGO (вообще в условиях перед полями ставь имена таблиц или алиасов, если в запросе больше 1 таблицы) и есть условие and NAME_CARGO = 'Магнет. порожняк' в WHERE значит вместо LEFT OUTER JOIN можно использовать INNER JOIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 11:43 |
|
||
|
выборка данных из 2 связанных таблиц с несколькими sum функциями
|
|||
|---|---|---|---|
|
#18+
учту. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 11:45 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1563295]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
185ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 559ms |

| 0 / 0 |
