|
|
|
Неправильный результат при сумме с группировкой
|
|||
|---|---|---|---|
|
#18+
Заметил такой феномен, что при вычислении в одном запросе двух сумм (входящих и исходящих) результат неправильный. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Необходимо составить запрос, отображающий общий вес пришедших и ушедших партий по каждой карточке груза. Код: sql 1. 2. 3. 4. 5. Так вот, запрос отображает неправильные суммы. Когда создаю два отдельных запроса, на incoming и на outgoing, то каждый из них отображает правильные суммы. Код: sql 1. 2. 3. 4. Код: sql 1. 2. 3. 4. Почему так?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 15:04:29 |
|
||
|
Неправильный результат при сумме с группировкой
|
|||
|---|---|---|---|
|
#18+
svnvlad, Дополнительные JOIN-ы дают больше дублирующихся записей до группировки. Уберите суммирование и группировку, увидите сами. Я бы сделал без группировки подзапросами в списке SELECT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 15:29:37 |
|
||
|
Неправильный результат при сумме с группировкой
|
|||
|---|---|---|---|
|
#18+
конечно можно написать вложенный запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Тогда правильно отображает. Но что делать, если нужно вычислить разницу между суммой входящих и суммой исходящих (остаток)?? Вот так ругается на синтаксис: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 15:30:23 |
|
||
|
Неправильный результат при сумме с группировкой
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. А дальше крутите как хотите: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 15:35:25 |
|
||
|
Неправильный результат при сумме с группировкой
|
|||
|---|---|---|---|
|
#18+
miksoft, О, спасибо! Но тут, получается, не вполне осознано базовое понимание JOIN-ов. Я как рассуждаю: если есть 3 таблицы, со следующими значениями: cargo_card id 1 2 incoming id cargo_card_id 1 1 outgoing id cargo_card_id 1 2 То запрос Код: sql 1. 2. 3. 4. должен выдать: cc.id i.id o.id 1 1 null 2 null 2 Но в реальности выдает больше. Что-то здесь не так. На самом деле выдает что-то типа этого: cc.id i.id o.id 1 1 2 1 1 2 2 1 2 2 1 2 Но какого фига он дублирует те значения вторичных таблиц, которые к данному id не относятся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 15:45:06 |
|
||
|
Неправильный результат при сумме с группировкой
|
|||
|---|---|---|---|
|
#18+
т.е. как будто CROSS JOIN получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 15:46:32 |
|
||
|
Неправильный результат при сумме с группировкой
|
|||
|---|---|---|---|
|
#18+
svnvladНо в реальности выдает больше. Что-то здесь не так. На самом деле выдает что-то типа этого:Не должно такого быть. Сделайте такие таблички и покажите натурный эксперимент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 16:14:35 |
|
||
|
Неправильный результат при сумме с группировкой
|
|||
|---|---|---|---|
|
#18+
Может, не надо коррелированных подзапросов, а? делайте полные подзапросы по таблицам incoming и outgoing (кстати, а хрен ли их две, сущность-то одна!), а потом уже вяжите на основную таблицу. Шаблонно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 16:50:07 |
|
||
|
Неправильный результат при сумме с группировкой
|
|||
|---|---|---|---|
|
#18+
AkinaМожет, не надо коррелированных подзапросов, а?Это зависит от. Если из таблицы cargo в итоге нужны все или почти все записи, то да, лучше джойнить с подзапросами. А если нужны всего одна или несколько записей, то, думаю, мой вариант будет лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 18:05:31 |
|
||
|
Неправильный результат при сумме с группировкой
|
|||
|---|---|---|---|
|
#18+
Akinaподзапросы по таблицам incoming и outgoing (кстати, а хрен ли их две, сущность-то одна!) На самом деле там одна таблица с полями from_cargo_card_id и to_cargo_card_id. Это для примера я их разделил, чтобы легче понимать было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2016, 18:10:03 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39169652&tid=1832158]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
201ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 531ms |

| 0 / 0 |
