|
|
|
Странное поводение запроса
|
|||
|---|---|---|---|
|
#18+
Есть внутренний JOIN Код: sql 1. 2. 3. 4. 5. 6. Так вот когда я делаю вывод в основном запросе `ps`.`ss` когда есть значение, то все ок, выдает число, а когда значения нет, он вместо 0 выдает NULL. Хотя во внутреннем JOIN я использую IFNULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2016, 12:23 |
|
||
|
Странное поводение запроса
|
|||
|---|---|---|---|
|
#18+
И еще вопросик: вот такая конструкия по-видимому не проходит Код: sql 1. 2. 3. То есть не посылает 0, если я в основном запросе пытаюсь сделать что-то типа: IFNULL(`ps`.`sum`, 0) AS `prevSum`, и LEFT JOIN ( SELECT `sale` FROM `reward` ORDER BY `sum` DESC LIMIT 1 ) AS `psale` ON (`psale`.`sale` <= `prevSum`) [/SRC] То не проходит, подскажите как быть, мне обязателньо из внутренного JOIN надо получить 0 а не NULL если не найдено, и потом запустить эти данные в другие подзапросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2016, 12:38 |
|
||
|
Странное поводение запроса
|
|||
|---|---|---|---|
|
#18+
motoroller1983когда значения нет Тогда и записи в подзапросе нет. И внешний LEFT JOIN подставляет NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2016, 12:41 |
|
||
|
Странное поводение запроса
|
|||
|---|---|---|---|
|
#18+
motoroller1983мне обязателньо из внутренного JOIN надо получить 0 а не NULL если не найдено Сервер не умеет отдавать данные, которых у него НЕТ. Даже в подзапросах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2016, 12:42 |
|
||
|
Странное поводение запроса
|
|||
|---|---|---|---|
|
#18+
Скажите, а как быть в данном случае, если дальше в подзапроса мне надо оперировать нулем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2016, 13:14 |
|
||
|
Странное поводение запроса
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. В общем все получилось по основному запросу, но есть кусок который все время неверно выполняется prevBonus все время 0 Когда я делал с подзапросами Код: sql 1. Все считалось корректно, то есть выводил сумму скидки для этого значения Таблица типа: sum sale 5000 10% 7000 11% 10000 13% 15000 15% 20000 17% 30000 19% 43000 21% 57000 23% 75000 25% То есть в моем примере при сумме заказа на 16200 prevBonus должен быть равен 15% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2016, 14:05 |
|
||
|
Странное поводение запроса
|
|||
|---|---|---|---|
|
#18+
motoroller1983То есть в моем примере при сумме заказа на 16200 prevBonus должен быть равен 15%Да ни хрена. ON применяется ПОСЛЕ SELECT. Тогда как отбор должен быть в запросе, а не после его выполнения. Убери условие во WHERE подзапроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2016, 15:10 |
|
||
|
Странное поводение запроса
|
|||
|---|---|---|---|
|
#18+
Логика как раз верная мне надо получить из второго JOIN`a сумму всех покупок, и потом на основе этой суммы из другой таблицы понять в какой диапазон попадает эта сумма, чтобы вывести скидки исходя из этой суммы Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. В итоге я конечно же получаю ошибку #1054 - Unknown column 'ps.sum' in 'where clause' То есть мне надо как-то вынести условие в ON JOIN`a, а не во внутрь запроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2016, 15:25 |
|
||
|
Странное поводение запроса
|
|||
|---|---|---|---|
|
#18+
motoroller1983Логика как раз верная Верная логика и верная её реализация при корректных данных дают верный результат всегда. Неверный результат всегда итог неверной логики, неверной реализации или неверных данных - по отдельности или в любой комбинации. motoroller1983мне надо получить из второго JOIN`a сумму всех покупок, и потом на основе этой суммы из другой таблицы понять в какой диапазон попадает эта сумма, чтобы вывести скидки исходя из этой суммы Должны быть вложенные подзапросы, а не параллельные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2016, 16:18 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39152402&tid=1832255]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 438ms |

| 0 / 0 |
