|
|
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#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. А хотелось бы избежать ветвления т.к. код А один и тот же и длинный, можно ли как-то записать так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 22:15 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#18+
fedorov2012 А хотелось бы избежать ветвления т.к. код А один и тот же и длинный, можно ли как-то записать так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. а что попробовал и ругается при компиляции????? чего-то мне не верится в такое зы. однако как мне кажется при таком условии table_session будет сканировать натуралом ззы. как по мне то вот так лучше Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 22:28 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#18+
автор m7m , а что попробовал и ругается при компиляции????? Не ругается, процедура возвращает пустоту при ASessionID = 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 22:45 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#18+
fedorov2012Если он не нулевой то должна приджоиниться еще одна таблица не выйдет. Если такой запрос select нельзя написать в DSQL, то нельзя и в PSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 23:36 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#18+
fedorov2012автор m7m , а что попробовал и ругается при компиляции????? Не ругается, процедура возвращает пустоту при ASessionID = 0 ну если возвращает пустоту то мне не хватает знаний я чего-то думал что такой финт пройдет вполне нормально значит буду штудировать джойны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 08:02 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#18+
fedorov2012автор m7m , а что попробовал и ругается при компиляции????? Не ругается, процедура возвращает пустоту при ASessionID = 0 Посмотрел, почитал, попробовал и пришел к выводу что если этот запрос Код: sql 1. 2. 3. 4. 5. при ASessionID <> 0 возвращает записи то тем более он возвращает записи при ASessionID = 0 вот только во втором случае количество записей будет гораздо больше чем в первом ибо по сути во втором случае мы имеем джойн без условия а это наверное не совсем то что ожидалось запрос дающий ожидаемый (ну тот что я бы ожидал) результат будет вот такой Код: sql 1. 2. 3. 4. 5. 6. зы. Это по сути то-же самое что и предыдущее предложение с проверкой условия внутри цикла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 09:38 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#18+
m7m, select во where это select на каждую результирующую запись from'a - это тормоза пока сделал через IF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 10:09 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#18+
fedorov2012m7m, select во where это select на каждую результирующую запись from'a - это тормоза пока сделал через IF Вопрос был про "А хотелось бы избежать ветвления т.к. код А один и тот же и длинный, можно ли как-то записать так:" зы. ну я ошибся, вместо Код: sql 1. 2. надо Код: sql 1. 2. и если это Код: sql 1. 2. 3. 4. 5. 6. 7. тормозит, то тогда Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 11:17 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#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. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:36 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#18+
А так на FB можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:35 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#18+
m7m, ok - не юзал ранее что касается запроса выше от Fr0sT-Brutal - мне кажется, проще обычным IF, но в любом случае спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 20:05 |
|
||
|
Избежать ветвления (IF) в ХП
|
|||
|---|---|---|---|
|
#18+
Проверял на 2.5, полностью рабочий вариант. Как знаешь, конечно, но если вдруг ты когда-нибудь что-то изменишь в "Коде А"-1 и забудешь это сделать в "Коде А"-2 и через полгода это вылезет мистическим трудновылавливаемым багом - вспомни этот день xD ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 20:30 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38779096&tid=1563270]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
191ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 545ms |

| 0 / 0 |
