|
case + ware
|
|||
---|---|---|---|
#18+
Здравствуйте, в зависимости от типа данных type = 1 или type = 2 нужно выполнять разные условия для отбора данных, подскажите как это можно сделать? Вот мои наработки Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 16:57 |
|
case + ware
|
|||
---|---|---|---|
#18+
petrovichvanyaЗдравствуйте, в зависимости от типа данных type = 1 или type = 2 нужно выполнять разные условия для отбора данных, подскажите как это можно сделать? Вот мои наработки Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
ну or напрмер или union Или... в зависимости от..... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:11 |
|
case + ware
|
|||
---|---|---|---|
#18+
petrovichvanya, или так Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:16 |
|
case + ware
|
|||
---|---|---|---|
#18+
Надфиль, про OR и забыл, спасибо, что напомнили) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:21 |
|
case + ware
|
|||
---|---|---|---|
#18+
Надфиль, Простота залог успеха. Делайте функцию и считайте в ней Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
в самом запросе просто Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:22 |
|
case + ware
|
|||
---|---|---|---|
#18+
feagorНадфиль, Простота залог успеха. Делайте функцию и считайте в ней эта простота приведет к замедлению работы запроса. существенному. да и где тут простота то?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 17:31 |
|
case + ware
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:40 |
|
case + ware
|
|||
---|---|---|---|
#18+
интересно, оптимизатор понимает, что условия с использованием подзапросов следует перестроить так, чтобы подзапросы выполнялись как можно реже? т.е. например, условие "when not exists(select * from ...) and :x = 1 then" исполнять задом наперед: "when :x = 1 and not exists(select * from ...) then" наверно понимает.. не пальцем ведь деланый ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 18:52 |
|
case + ware
|
|||
---|---|---|---|
#18+
andrey_anonymous Код: plsql 1. 2. 3. 4. 5.
чем Null лучше 1? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2019, 19:49 |
|
case + ware
|
|||
---|---|---|---|
#18+
Надфильчем Null лучше 1? анекдот - Чем армяне лучше, чем грузины?! - Чем грузины! Технически без разницы. С точки зрения читаемости кода я предпочитаю в данном контексте использовать null ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2019, 14:21 |
|
case + ware
|
|||
---|---|---|---|
#18+
andrey_anonymous[ Технически без разницы. спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2019, 15:07 |
|
case + ware
|
|||
---|---|---|---|
#18+
andrey_anonymousС точки зрения читаемости кода я предпочитаю в данном контексте использовать null Я пишу там поясняющие комментарии для комплексных запросов, типа: Код: plsql 1.
Иначе какая-нибудь портянка с null, а зачем сделано и какую роль выполняет может быть не очень очевидно. Читать литерал проще, чем вникать в логику запроса. Опять же, если есть только sql_id, который, например, нужно оптимизировать, то проще для оптимизации иметь все данные под рукой (v$sqlarea.sql_fulltext), чем выяснять, зачем было написано так, как написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2019, 16:26 |
|
case + ware
|
|||
---|---|---|---|
#18+
SeaGateandrey_anonymousС точки зрения читаемости кода я предпочитаю в данном контексте использовать null Я пишу там поясняющие комментарии для комплексных запросов Поясню немного свои предпочтения: - комментарии я предпочитаю оформлять комментариями - литералы в select-list всегда привлекают внимание, они выделяются IDE, за них буквально "цепляется глаз". В контексте exists это мешает и вызывает некоторое раздражение. В то же время null - это не-значение, редакторами особо не выделяется и потому конструкцию "exists ( select null from" я безболезненно пропускаю как "стандартное заклинание". disclaimer: следовать за моими тараканами никого не агитирую, к дискуссии не расположен. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2019, 16:41 |
|
case + ware
|
|||
---|---|---|---|
#18+
andrey_anonymous- комментарии я предпочитаю оформлять комментариями Код, который не нуждается в комментариях, предпочтительнее того, который нуждается в них. andrey_anonymous- литералы в select-list всегда привлекают внимание, они выделяются IDE, за них буквально "цепляется глаз". В то же время null - это не-значение, редакторами особо не выделяется и потому конструкцию "exists ( select null from" я безболезненно пропускаю как "стандартное заклинание". Зависит от настроек конкретной IDE. andrey_anonymousВ контексте exists это мешает и вызывает некоторое раздражение. Раздражение вызывает множество exists, которые при folding в vim выглядят одинаково (в демонстрации 4 exists, написанные двумя способами, 2 свернуты): select null - не несет информации полезной для понимания того, что в exists, в отличии от select 'something meaningful'. Когда на вход имеется запрос из shared pool, комментарии там остутствуют (в случае нединамического SQL из PL/SQL и комментариях не в хинтах). Соответственно, более эффективно для понимания этих запросов иметь поясняющие литералы, если запрос делает что-то не тривиальное. Иначе придеться обращаться к коду, который еще нужно идентифицировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2019, 19:07 |
|
case + ware
|
|||
---|---|---|---|
#18+
SeaGateandrey_anonymous- комментарии я предпочитаю оформлять комментариями Код, который не нуждается в комментариях, предпочтительнее того, который нуждается в них. Лучше быть богатым и здоровым, чем бедным и больным. Ну и еще вагон подобных благоглупостей. От Вашего примера ничем не отличается: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Собственно null несет вполне понятный смысл: мы НИЧЕГО не выбираем запросом, что вполне соответствует логике exists. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 10:49 |
|
case + ware
|
|||
---|---|---|---|
#18+
andrey_anonymous, Код: plsql 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 11:27 |
|
case + ware
|
|||
---|---|---|---|
#18+
K790? Последний раз. 1 - это ЗНАЧЕНИЕ. Я сразу пытаюсь понять, нафига оно тут и куда пойдет из подзапроса, повторно втыкаясь в exists - т.е. спотыкаюсь. null - не-значение и подобного эффекта не производит. Напоминаю, что никого не агитирую следовать за моими тараканами. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 11:52 |
|
case + ware
|
|||
---|---|---|---|
#18+
andrey_anonymous, теперь мысль понятна, не нервничайте так :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 12:01 |
|
case + ware
|
|||
---|---|---|---|
#18+
andrey_anonymousникого не агитирую следовать за моими тараканами.И тем не менее я тоже рекомендую всем самодокументировать код: никакое значение из подзапроса нам не нужно. Даже несмотря на то, что Oracle переписывает что бы ни было в select-list-е в "select 0". ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2019, 12:06 |
|
|
start [/forum/topic.php?fid=52&fpage=70&tid=1882243]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 255ms |
total: | 392ms |
0 / 0 |