|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
Здравствуйте! Есть исходные данные. SQL. Исходные данные Код: 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.
Написал такой запрос. SQL Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Учитывая, что в SELECT используется Код: sql 1. 2.
, то в WHERE насколько корректно писать так? Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 19:38 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
ferzmikk , то в WHERE насколько корректно писать так? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 21:02 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
Главное сомнение должно быть: а "0" ли "null"? а по запросу: isnull(*,0) должно стоять в where ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 21:06 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
alexeyvg, Вариант 1 тоже некорректно? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 21:07 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
Получается лучше так оставить? SQL Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 21:10 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
ferzmikk Получается лучше так оставить? SQL Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
нет. Если уж так хочется: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2021, 21:17 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 12:56 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
Gerasimenko ferzmikk Получается лучше так оставить? SQL Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
нет. Если уж так хочется: Код: sql 1. 2. 3. 4.
Поэтому AND - неправильно ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 12:58 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
ferzmikk, Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 14:41 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
alexeyvg ferzmikk , то в WHERE насколько корректно писать так? invm ferzmikk, Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 17:48 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
ferzmikk Пишут же, что так некорректно писать. Работать будет, конкретно для сравнения с 0, но как то неаккуратненько. Будут какие то ошибки, если кто то будет позже менять условия, или для других формул. Лучше в подзапрос формулы, а не повторять их и в SELECT, и в WHERE И вообще, если уж писать: Код: sql 1. 2. 3. 4.
то зачем: Код: sql 1. 2. 3. 4.
? Тогда уж Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 20:58 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
alexeyvg Работать будет, конкретно для сравнения с 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2021, 22:56 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
invm alexeyvg Работать будет, конкретно для сравнения с 0 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Просто если ставится задача "тут на экране есть строки, в которых (тут некая формула с этими полями), сделай, что бы они не выводились", концептуально правильно делать фильтр на то, что "на экране", а не на исходные данные. Меньше вероятность ошибок, проще поддержка. Что бы не исправлять потом ошибки, приговаривая "ну, это другое" :-) Хотя это не всегда оптимально по производительности, поэтому иногда можно и исходные данные фильтровать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 01:03 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
Согласно постановке задачи из первого поста в WHERE надо использовать OR, а не AND. ferzmikk одновременно не нулевые ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 11:17 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
iap, Так то верно, по условию OR получается. Но тут обсуждается акцент на вопрос: насколько корректно и безопасно оставлять такую запись Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 14:48 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
ferzmikk Так то верно, по условию OR получается. iap Согласно постановке задачи из первого поста в WHERE надо использовать OR, а не AND. ferzmikk одновременно не нулевые И как условие "одновременно не нулевые" трансформировалось в "либо одно значение ненулевое, либо другое"? Если у записи одно из значений 2-х полей полей ненулевое то Мера1 <> 0 OR Мера2 <> 0 покажут такую запись, а не надо, потому что у неё не выполняется условие "одновременно не нулевые" Например, показывается запись 5, 0, которая не соответствует условию "все строки, которые Мера1 и Мера2 одновременно не нулевые.". Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 15:12 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
ferzmikk Но тут обсуждается акцент на вопрос: насколько корректно и безопасно оставлять такую запись Код: sql 1.
Но у вас там будет 50 полей, куча формул, вы будете лепить и постоянно менять условия по заданиям, и будет сложно отслеживать, какие условия можно перенести на исходные данные, а какие нужно накладывать на результат. Я бы посоветовал сделать вычисления по формулам в подзапросе, а снаружи наложить фильтры и условия, в точности как сказано в задании, будет меньше затрат, и меньше вероятность ошибки. Не забывая, что на вычисленных значениях индексы могут не использоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 15:17 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
ferzmikk Нужно выгрузить все строки, которые Мера1 и Мера2 одновременно не нулевые. alexeyvg ferzmikk Так то верно, по условию OR получается. Запустил это скрипт отдельно с OR и отдельно с AND. Вижу разницу. Хотя в моем случае больше подходит AND. Но для данного рассматриваемого вопроса это не важно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 15:49 |
|
Вопрос про фильтр
|
|||
---|---|---|---|
#18+
alexeyvg Я писал выше - конкретно для этих условий правильно. Но у вас там будет 50 полей, куча формул, вы будете лепить и постоянно менять условия по заданиям , и будет сложно отслеживать, какие условия можно перенести на исходные данные, а какие нужно накладывать на результат. Код: sql 1.
И будет хотя бы оптимально по производительности. Я бы посоветовал сделать вычисления по формулам в подзапросе, а снаружи наложить фильтры и условия, в точности как сказано в задании, будет меньше затрат, и меньше вероятность ошибки. Не забывая, что на вычисленных значениях индексы могут не использоваться.Ок, если поля будут добавляться. Спасибо за подробный разбор! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2021, 15:51 |
|
|
start [/forum/topic.php?fid=46&msg=40104993&tid=1684195]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
124ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 231ms |
0 / 0 |