|
|
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZone, ну тогда остаётся грешить только на порядок расчёта переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:22:16 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
tanglirTHomZone, ну тогда остаётся грешить только на порядок расчёта переменных. А переменные чем то можно заменить? Ну, какой то другой способ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:25:53 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoftХм, а почему материализация?неверно выразился... при отработке запроса вида Код: sql 1. 2. 3. как только объём данных, возвращаемых внутренним селектом, перерастёт за... tmp_table_size, вроде?.., так сразу же начнётся работа с диском. А поскольку в табличке скорее всего не десять и не двадцать записей, то ТС на это напорется практически гарантированно - если, повторюсь, он при копировании на форум не убрал из текста запроса имеющийся в нём where. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:26:40 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZoneА переменные чем то можно заменить? Ну, какой то другой способФормулой, по которой они рассчитываются из базовых полей. Больше ничем. Ну или как миксофт предложил, с подзапросом(-ами): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. но это кроме сокращения текста запроса (и то не факт) ничего больше не даст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 12:37:20 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
На последнего. не смотрел весь запрос, но обратил внимание на то, что в секции from нет подзапроса с предустановкой значений переменных. Я конечно понимаю, что они в селекте сразу насчитываются и присваиваются ... наверное, но для себя - давно взял за правило делать джойн с селектом, в котором устанавливаю переменные по дефолту. Хотя бы их тип становится известен ДО начала выполнения.. а то преобразования типов с неустановленной перенной панимаишь ли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 13:00:47 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
Arhat109На последнего. не смотрел весь запрос, но обратил внимание на то, что в секции from нет подзапроса с предустановкой значений переменных. Я конечно понимаю, что они в селекте сразу насчитываются и присваиваются ... наверное, но для себя - давно взял за правило делать джойн с селектом, в котором устанавливаю переменные по дефолту. Хотя бы их тип становится известен ДО начала выполнения.. а то преобразования типов с неустановленной перенной панимаишь ли... А можете пример дать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 13:04:21 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZone, Код: sql 1. Здесь алиас dummy как раз и есть подзапрос по предустановке значения переменной. Сталкивался с похожим поведением, но не помню ситуации конкретно. После этого всегда делаю такой dummy если используются переменные в запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 13:12:23 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
Arhat109THomZone, Код: sql 1. Здесь алиас dummy как раз и есть подзапрос по предустановке значения переменной. Сталкивался с похожим поведением, но не помню ситуации конкретно. После этого всегда делаю такой dummy если используются переменные в запросе. Спасибо, помогло! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 13:24:43 |
|
||
|
Помогите правильно оформить запрос?
|
|||
|---|---|---|---|
|
#18+
THomZoneAkina, Этот запрос выводится в DBGrid после первого запроса в поле "скидка" и в "цена_всего" пишет "(BLOB)". Если еще несколько раз запустить этот запрос (типо обновить) то нормально. Почему не хочет сразу все нормально? А вообще завпрос нормально оформлен? Может как то можно подругному? Так нефиг переменные в запросы вставлять. Убирай их нахрен быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2013, 19:02:41 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1836031]: |
0ms |
get settings: |
5ms |
get forum list: |
25ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
103ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 379ms |

| 0 / 0 |
