|
|
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
У меня проблемы с этим запросом: Код: sql 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. Не правильно выводятся некоторые поля (скидка, цена_всего). Подскажите как подругому сделать этот запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:07:47 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
Что значит "неправильно выводятся"? задом наперёд? вверх ногами? обясняйте вменяемо. PS. Есть тег SRC - покрасивше, чем цитата... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:13:15 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
Akina, Этот запрос выводится в DBGrid после первого запроса в поле "скидка" и в "цена_всего" пишет "(BLOB)". Если еще несколько раз запустить этот запрос (типо обновить) то нормально. Почему не хочет сразу все нормально? А вообще завпрос нормально оформлен? Может как то можно подругному? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:17:35 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
IF(s1.discount_percent <> null, s1.discount_percent, 0) для читабельности лучше заменить на IFNULL(s1.discount_percent, 0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:28:35 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
Насколько я смутно помню, порядок вычисления выражений в секции SELECT не определен, поэтому, имхо, стоит отказаться от использования промежуточных переменных и вычислять нужно значение целиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:30:33 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoft, поподробней можно, пожалуйста? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:35:12 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZoneв поле "скидка"странно, в приведённом запросе нет такого поля THomZoneи в "цена_всего" пишет "(BLOB)"ну а что у вас лежит в переменных "скидка_процентная","цена_всего_без_скидки","скидка_денежная" сразу после первого запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:39:16 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZonemiksoft, поподробней можно, пожалуйста? Ну вот, например, есть такие строки в запросе: Код: sql 1. 2. 3. Я не уверен, что всегда будет вычисляться сначала первая, потом вторая. Поэтому эти строки я предлагаю переписать так, чтобы из результат не зависел от порядка вычисления. Код: sql 1. 2. 3. Если s1.discount_percent не бывает равен 0, то выражение можно еще упростить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:46:06 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
tanglir, поле "скидка" объявлено Код: sql 1. Внимательно код посмотрите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:46:21 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoftIF(, s1.discount_percent, 0) для читабельности лучше заменить на IFNULL(s1.discount_percent, 0)Да ладно читабельность... а что s1.discount_percent <> null всегда даёт TRUE - это ничего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:48:06 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
Akina, почему всегда? Это поле в базще может быть NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:49:41 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
AkinamiksoftIF(, s1.discount_percent, 0) для читабельности лучше заменить на IFNULL(s1.discount_percent, 0)Да ладно читабельность... а что s1.discount_percent <> null всегда даёт TRUE - это ничего?Да, каюсь, пропустил :) Это, конечно, тоже обязательно нужно исправлять. Теперь уже думаю, что это наиболее вероятная причина отклонения логики запроса от желаемой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:51:49 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZoneAkina, почему всегда? Это поле в базще может быть NULLс NULL нельзя сравнивать напрямую операторами отношения. Можно только через IS NULL/IS NOT NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:53:09 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoft, с этим просто, а вот что делать с полем "цена_всего"? В нем очень большая формула если убрать переменные. Чем можно заменить меременные? Я вот до MySQL пользовался MS Access в нем делал так: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:56:54 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZoneполе "скидка" объявленоточно, проглядел ну тогда тот же вопрос - что у вас лежит в переменных "скидка_процентная","цена_всего_без_скидки","скидка_денежная" сразу после первого запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 11:59:49 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoftTHomZonemiksoft, поподробней можно, пожалуйста? Ну вот, например, есть такие строки в запросе: Код: sql 1. 2. 3. Я не уверен, что всегда будет вычисляться сначала первая, потом вторая. Поэтому эти строки я предлагаю переписать так, чтобы из результат не зависел от порядка вычисления. Код: sql 1. 2. 3. Если s1.discount_percent не бывает равен 0, то выражение можно еще упростить.Выделенное красным - всегда NULL ! Соответственно, IF(s1.discount_percent <> null, s1.discount_percent, 0) - всегда 0 Маленькое упрощение: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:00:40 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZoneа вот что делать с полем "цена_всего"? В нем очень большая формула если убрать переменныену так уберите переменные и напишите большую формулу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:00:49 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZonemiksoft, с этим просто, а вот что делать с полем "цена_всего"? В нем очень большая формула если убрать переменные. Чем можно заменить меременные?Во-первых, если подбирать для использования наиболее оптимальные функции, то итоговое выражение изрядно сократится. Один из вариантов для этого я уже дал, еще на один намекнул. Во-вторых, можно этот запрос убрать в подзапрос и вычислять часть полей в подзапросе, а часть во внешнем запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:01:10 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoftВо-вторых, можно этот запрос убрать в подзапрос и вычислять часть полей в подзапросе, а часть во внешнем запросе....и здравствуй, материализация. ТС ведь по всей таблице считает (если, конечно, не откусил хвост запроса). Я бы предпочёл написать длинный, но "прямой" запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:04:54 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
tanglirTHomZoneполе "скидка" объявленоточно, проглядел ну тогда тот же вопрос - что у вас лежит в переменных "скидка_процентная","цена_всего_без_скидки","скидка_денежная" сразу после первого запроса? Нормальные цыфровые значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:09:09 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZoneAkina, почему всегда? Это поле в базще может быть NULL Потому что сравнение NULL с любым значением (в т.ч. с другим NULL) всегда даёт NULL, если не используется специальное NULL-safe сравнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:13:32 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
tanglirmiksoftВо-вторых, можно этот запрос убрать в подзапрос и вычислять часть полей в подзапросе, а часть во внешнем запросе....и здравствуй, материализация. ТС ведь по всей таблице считает (если, конечно, не откусил хвост запроса). Я бы предпочёл написать длинный, но "прямой" запрос.Хм, а почему материализация? Специально не ловил, но не припомню, чтобы сталкивался с таким. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:17:02 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
Можно пожалуйста пример переделанного моего запроса. А то у меня уже мозги не варят совсем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:20:25 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZone , попробуйте выполнить Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:20:40 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38398655&tid=1836031]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 343ms |

| 0 / 0 |
