Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Что изменила переменная ?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть вот такой запрос (в оригинале он выглядит гораздо сложее, для удобства привожу его упрощённую форму) : Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. То есть. Имеется таблица "Товары" (products). Из неё вытаскиваем ИД, Название и "Новую цену" (NewPrice). Новая цена - это старая цена (колонка Price) с приминением скидки (колонка PricePercent, может быть "-5", "-10" % и т.д) и всё это прямо в запросе. Важный момент здесь - это ORDER BY. То есть товары отображаются согласно их цене (новой цене) в порядке возрастания (от самых дешёвых к самым дорогим). При этом "NewPricePSM=0" означается что товары, чья цена - 0 будут отброшены в самый конец списка. В общем это запрос работате нормально. Претензий нет. Выводится список, где на первом месте товар с ценой 10 рублей, дальше 35, потом 100, потом 120 и т.д. Но ! Мне понадобилось использовать переменную: @Percent := PricePercent Полный запрос выглядит вот так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Казалось бы, ничего не должно измениться... Но фиг там. ВНЕЗАПНО на первое место в списке попал товар с ценой 1890 рублей, а уже потом пошли 10, 35, 100 и т.д Как это вообще можно объяснить ? У меня ни малейшей идеи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 21:29 |
|
||
|
Что изменила переменная ?
|
|||
|---|---|---|---|
|
#18+
NecrosssКак это вообще можно объяснить ?Ляхко! в документации явно написано, что порядок вычисления выражений с переменными не определён. А потому неизвестно, откуда взято значение @Percent при вычислении NewPrice - присвоено из PricePercent этой записи или осталось от вычислений для предыдущей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 21:56 |
|
||
|
Что изменила переменная ?
|
|||
|---|---|---|---|
|
#18+
Akina, Изначально я попытался сделать: Код: sql 1. 2. 3. Но такой вариант выдал ошибку. Он не нашел "Percent" Поэтому и пришлоль прибегнуть к переменной. Что же тогда мне можно сделать чтобы починилось ? Или ничего нельзя сделать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 22:02 |
|
||
|
Что изменила переменная ?
|
|||
|---|---|---|---|
|
#18+
Поскольку в том виде, в каком оно тут показано, всё это действо бессмысленно до идиотизма, то, вероятно, это модель. Неудачная, прямо скажем. Думаю, лучше будет озвучить реальную задачу и реальную структуру исходных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 22:29 |
|
||
|
Что изменила переменная ?
|
|||
|---|---|---|---|
|
#18+
Akina, Выложу оригинальный запрос (Если ты что-то разберёшь ;) ) Код: 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. 34. 35. 36. 37. 38. Этот запрос работает, но как я уже говорил, "ВНЕЗАПНО на первое место в списке попал товар с ценой 1890 рублей, а уже потом пошли 10, 35, 100 и т.д". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 22:45 |
|
||
|
Что изменила переменная ?
|
|||
|---|---|---|---|
|
#18+
И вот всего-то? и весь этот геморрой с переменными - просто из нежелания два раза написать одно и то же выражение? ну несерьёзно, право слово... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2017, 22:51 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1830730]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 145ms |

| 0 / 0 |
