![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по синтасису coalesce в оракле
Rule © (2005-07-26 16:41:00)подскажите пожалуйста как сделать вот такой запрос
select coalesce (field1,0) from table1
Синтаксис Оракла требует чтоб второй параметр, в моем случае "0" тоже был полем ...
как обойти
вариант if then не подходит так как в этом случае field1 надо писать два раза, а у меня єто довольно большой подзапрос ....
подскажите пожалуйста ...
Fay (2005-07-27 17:34:00) [21]2 ANB © (27.07.05 17:30) [59]
Особенно это приятно в анонимных блоках, где есть ограничение на вложенность (3).
ANB (2005-07-27 17:30:00) [22]
> evvcom © (27.07.05 15:00) [57]
Это легко обходится вложенными запросами.
Fay (2005-07-27 17:20:00) [23]2 pasha_golub © (26.07.05 21:00) [51]
C Oracle не интересно 8). Он один справится с
select
T1.*
from Table1 T1 left join Table2 T2 on T1.ID = T2.ID
where T2.ID is null
без join.
Только вот выглядеть этот запрос будет не очень читаемо, особенно в случае нескольких объединений.
evvcom (2005-07-27 15:00:00) [24]
> Мне с плюсиками все равно больше нравится
Хозяин - барин. А если
> построить сложную логику типа "inner join a ... left join
> b ... right join с ... full join d ..." в where у меня в
> свое время не получилось и "старики оракла" тоже только
> плечами пожали. Оракл ругался на использование этих плюсов
> в нескольких строках.
А?
ANB (2005-07-27 14:56:00) [25]
> evvcom © (27.07.05 14:52) [55]
А, пусть жрет. Мне с плюсиками все равно больше нравится
evvcom (2005-07-27 14:52:00) [26]
> - и в 9 не жрет . . .
Еще как жрет! Уж это точно.
ANB (2005-07-27 13:49:00) [27]
> Fay © (26.07.05 17:39) [42]
- и в 9 не жрет . . .
pasha_golub (2005-07-27 13:45:00) [28]Up
evvcom (2005-07-26 22:32:00) [29]
> Ну, допустим Oracle. Раз у него до 9 версии не было этих
> самых JOIN'ов.
Не было в синтаксисе конструкции JOIN, но само соединение было:
from a, b where a.id=b.id - это аналог INNER JOIN
where a.id=b.id(+) - это вроде LEFT JOIN, но с плюсами я видел, но толком никогда сам не использовал, поэтому этот синтаксис и смысл (LEFT или RIGHT в данном случае) не помню. Поэтому не пинать.
Плюсы с обеих сторон - это FULL JOIN. Но построить сложную логику типа "inner join a ... left join b ... right join с ... full join d ..." в where у меня в свое время не получилось и "старики оракла" тоже только плечами пожали. Оракл ругался на использование этих плюсов в нескольких строках.
Кому-то может и не нравятся JOIN-ы, но мне они кажутся намного информативнее, и код с ними наиболее наглядным и читабельным.
> Rule © (26.07.05 18:03) [47]
> evvcom © (26.07.05 17:52) [44]
> придумать несолжно ...
Гораздо сложнее, чем ты думаешь. Если ты не знаешь, как решить задачу неизвестным тебе способом, это не значит, что она им не решается. :) Но попробуй.
pasha_golub (2005-07-26 21:00:00) [30]Fay © (26.07.05 20:23) [50]
Ы-ы-ы... :0)
Ну, допустим Oracle. Раз у него до 9 версии не было этих самых JOIN'ов.
А вообще-то, хотелось бы пример с использованием ANSI SQL.
Fay (2005-07-26 20:23:00) [31]2 pasha_golub © (26.07.05 19:26) [49]
Сервер какой?
pasha_golub (2005-07-26 19:26:00) [32]Сорри за офтоп.
Я вот (только не плюйтесь) до недавнего времени свято верил, что JOIN'ы это происки капиталистов. Что всегда можно перепесать запрос с соединением как запрос без соединения.
Прошло немало времени. Но мысль таки в голове осталась. Прав ли я? И если не прав, то можно ли привести пример такого запроса. Спасибо
Johnmen (2005-07-26 18:05:00) [33]>Rule © (26.07.05 18:03) [46]
Да.
Rule (2005-07-26 18:03:00) [34]evvcom © (26.07.05 17:52) [44]
придумать несолжно ... постараюсь до завтра придумать, если не забуду ...
Rule (2005-07-26 18:03:00) [35]Johnmen © (26.07.05 17:44) [43]
а неявные - это WHERE или что-то ещё ?
Rule (2005-07-26 18:02:00) [36]Fay © (26.07.05 17:39) [42]
что серьезно ? ... а как же без них обходились то ?
evvcom (2005-07-26 17:52:00) [37]
> Johnmen © (26.07.05 17:28) [38]
> >evvcom ©
>
> пост [27]
Да, почитал я этот пост. Может быть, но думаю, что нет. Если бы реальный запрос был, тогда можно было бы попробовать поспорить. А так, слова, слова, слова... :)
Johnmen (2005-07-26 17:44:00) [38]Явные джоины, т.е. слово "JOIN"
Fay (2005-07-26 17:39:00) [39]2 ANB © (26.07.05 17:37) [41]
Никак. JOIN-ы появились в девятке
ANB (2005-07-26 17:37:00) [40]А как в 8 join то запихать ? У меня не жрет . . .