Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по синтасису coalesce в оракле


Страницы:   1 2 3 4

Rule ©   (2005-07-26 16:41:00) 

подскажите пожалуйста как сделать вот такой запрос
select coalesce (field1,0) from table1

Синтаксис Оракла требует чтоб второй параметр, в моем случае "0" тоже был полем ...
как обойти

вариант if then  не подходит так как в этом случае field1  надо писать два раза,  а у меня єто довольно  большой подзапрос ....
подскажите пожалуйста ...


Rule   (2005-07-26 17:30:00) [41]

evvcom ©   (26.07.05 17:29) [39]
на это и спишем :-), восьмой не может а девятый может :-)


evvcom   (2005-07-26 17:29:00) [42]


> Rule ©   (26.07.05 17:20) [33]

Ладно, не буду про 8 говорить, а в 9 проверил, все работает.


Johnmen   (2005-07-26 17:28:00) [43]

>evvcom ©  

пост [27]


Rule   (2005-07-26 17:25:00) [44]

evvcom ©   (26.07.05 17:22) [34]
я ж говорю что в данном случае
INNER JOIN не подходить надо LEFT JOIN а там уже мудрить и получается чем больше таблиц я слева прикрепляю, тем больше они перемнжаются, и тогда использование тех же агрегатов становится нереальным ... помоему геморой


Rule   (2005-07-26 17:24:00) [45]

Johnmen ©   (26.07.05 17:22) [35]
сори :-), естественно имел ввиду соединение :-), тоесть джоин


Johnmen   (2005-07-26 17:22:00) [46]

>Rule ©   (26.07.05 17:19) [32]

Немного режет слух... Не надо называть "соединение" (JOIN) "объединением" (UNION).


evvcom   (2005-07-26 17:22:00) [47]


> поэтому я считаю, что объединять стоит если объединямые
> таблицы большие, именно тогда будет выйгрышь в противном
> случае все только усложняется

Выигрыш будет в любом случае, если оптимизатор не разрулит сам. Вопрос только в том, будет ли он заметен. А насчет усложнения все зависит от того, как ты привык думать. Мне нагляднее обозревать INNER JOIN ... ON, нежели потом в where выискивать по каким же полям там эти таблицы/подзапросы вяжутся? Имхо.


Rule   (2005-07-26 17:20:00) [48]

evvcom ©   (26.07.05 17:17) [31]
В данном случае [18] и [21]


я понимаю что на бумаге написано ... но я то руками то сделал вроде все правильно ...
тяжело ошибиться в однострочном запросе, если пишешь их довольно долго уже ...


Rule   (2005-07-26 17:19:00) [49]

evvcom ©   (26.07.05 17:12) [26]

кстати там немного не то ... дело в том, что там ты использовал внутреннее объединение, в этом случае у меня будут те записи таблицы, в которых будет присутствовать скидка, в моем случае надо внешнее объединение


evvcom   (2005-07-26 17:17:00) [50]


> А что, они должны в данном случае по разу выполнится ?????????

А если на миллион строк выполнить миллион выборок из еще миллиона строк, сколько ж времени потребуется?
А можно сделать одну выборку, потом ее сджойнить еще с одной и получим тот же результат за гораздо меньшее время.

> Johnmen ©   (26.07.05 17:11) [23]
> >evvcom ©   (26.07.05 17:09) [21]
>
> Кому же верить, если хочется всем ?

В данном случае [18] и [21]


Rule   (2005-07-26 17:16:00) [51]

evvcom ©   (26.07.05 17:12) [26]
я не уверен что так будет быстрее,

я лично уверен, что так объединять стоит если вот те таблицы с которыми клеишь большие, а если они по 3-20 записей, то оптимальнее использовать именно подзапросы (проверено на практике), и ИМХО конечно, но вот такой с подзапросами запрос более читабельный нежели с объединениями ...

поэтому я считаю, что объединять стоит если объединямые таблицы большие, именно тогда будет выйгрышь в противном случае все только усложняется


Rule   (2005-07-26 17:15:00) [52]

Johnmen ©   (26.07.05 17:14) [27]
вот и я так попытался объяснить токо не так хорошо получилось ...


Rule   (2005-07-26 17:14:00) [53]

таблица состоит из одного поля сделал запрос
select coalesce(CARD_NUMBER,'0') from V_BL
тот же результат так что наверное в Oracle8  под другома нежели в 9


Johnmen   (2005-07-26 17:14:00) [54]

>Rule ©   (26.07.05 17:11) [24]

Если он это имел в виду, то не учел, что не всегда можно получить желаемое, просто заменив вложенные кореллирующие на соединение. И наоборот.


evvcom   (2005-07-26 17:12:00) [55]


> другого выхода тут нет ...

Выход есть всегда. См. http://www.delphimaster.ru/cgi-bin/forum.pl?id=1122378297&n=1, там запрос аналогичен твоему, а в [8] я эти "внутренности" вынес наружу.


Rule   (2005-07-26 17:12:00) [56]

evvcom ©   (26.07.05 17:09) [21]
вот щас возьму запросик попроще ... и скажу точно


Rule   (2005-07-26 17:11:00) [57]

Johnmen ©   (26.07.05 17:10) [22]
я так понял evvcom © имел ввиду внешнее объединение вместо подзапросов ...


Johnmen   (2005-07-26 17:11:00) [58]

>evvcom ©   (26.07.05 17:09) [21]

Кому же верить, если хочется всем ?


Johnmen   (2005-07-26 17:10:00) [59]

>evvcom ©   (26.07.05 17:05) [17]

А что, они должны в данном случае по разу выполнится ?????????
Тогда это бред какой-то......


evvcom   (2005-07-26 17:09:00) [60]


> Да... Занятно... Отступили-таки...:)

Да нифига не отступили. Нормально оракловый coalesce принимает хоть поле, хоть константу. Проверял только что на 9.2.0.6. И в документации написано 'expression'. Просто "афтар" чего-то напутал.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо