Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по синтасису coalesce в оракле   Найти похожие ветки 

 
Rule ©   (2005-07-26 17:30) [40]

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


 
ANB ©   (2005-07-26 17:37) [41]

А как в 8 join то запихать ? У меня не жрет  . . .


 
Fay ©   (2005-07-26 17:39) [42]

2 ANB ©   (26.07.05 17:37) [41]
Никак. JOIN-ы появились в девятке


 
Johnmen ©   (2005-07-26 17:44) [43]

Явные джоины, т.е. слово "JOIN"


 
evvcom ©   (2005-07-26 17:52) [44]


> Johnmen ©   (26.07.05 17:28) [38]
> >evvcom ©  
>
> пост [27]

Да, почитал я этот пост. Может быть, но думаю, что нет. Если бы реальный запрос был, тогда можно было бы попробовать поспорить. А так, слова, слова, слова... :)


 
Rule ©   (2005-07-26 18:02) [45]

Fay ©   (26.07.05 17:39) [42]
что серьезно ? ... а как же без них обходились то ?


 
Rule ©   (2005-07-26 18:03) [46]

Johnmen ©   (26.07.05 17:44) [43]
а неявные - это WHERE или что-то ещё ?


 
Rule ©   (2005-07-26 18:03) [47]

evvcom ©   (26.07.05 17:52) [44]
придумать несолжно ... постараюсь до завтра придумать, если не забуду ...


 
Johnmen ©   (2005-07-26 18:05) [48]

>Rule ©   (26.07.05 18:03) [46]

Да.


 
pasha_golub ©   (2005-07-26 19:26) [49]

Сорри за офтоп.

Я вот (только не плюйтесь) до недавнего времени свято верил, что JOIN"ы это происки капиталистов. Что всегда можно перепесать запрос с соединением как запрос без соединения.

Прошло немало времени. Но мысль таки в голове осталась. Прав ли я? И если не прав, то можно ли привести пример такого запроса. Спасибо


 
Fay ©   (2005-07-26 20:23) [50]

2 pasha_golub ©   (26.07.05 19:26) [49]
Сервер какой?


 
pasha_golub ©   (2005-07-26 21:00) [51]

Fay ©   (26.07.05 20:23) [50]
Ы-ы-ы... :0)

Ну, допустим Oracle. Раз у него до 9 версии не было этих самых JOIN"ов.

А вообще-то, хотелось бы пример с использованием ANSI SQL.


 
evvcom ©   (2005-07-26 22:32) [52]


> Ну, допустим 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-27 13:45) [53]

Up


 
ANB ©   (2005-07-27 13:49) [54]


> Fay ©   (26.07.05 17:39) [42]
- и в 9 не жрет . . .


 
evvcom ©   (2005-07-27 14:52) [55]


> - и в 9 не жрет . . .

Еще как жрет! Уж это точно.


 
ANB ©   (2005-07-27 14:56) [56]


> evvcom ©   (27.07.05 14:52) [55]
А, пусть жрет. Мне с плюсиками все равно больше нравится


 
evvcom ©   (2005-07-27 15:00) [57]


> Мне с плюсиками все равно больше нравится

Хозяин - барин. А если
> построить сложную логику типа "inner join a ... left join
> b ... right join с ... full join d ..." в where у меня в
> свое время не получилось и "старики оракла" тоже только
> плечами пожали. Оракл ругался на использование этих плюсов
> в нескольких строках.
А?


 
Fay ©   (2005-07-27 17:20) [58]

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.

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


 
ANB ©   (2005-07-27 17:30) [59]


> evvcom ©   (27.07.05 15:00) [57]

Это легко обходится вложенными запросами.


 
Fay ©   (2005-07-27 17:34) [60]

2 ANB ©   (27.07.05 17:30) [59]
Особенно это приятно в анонимных блоках, где есть ограничение на вложенность (3).


 
ANB ©   (2005-07-27 17:56) [61]


> Fay ©   (27.07.05 17:34) [60]

Да поправят.


 
ANB ©   (2005-07-27 17:57) [62]

Кстати, в блоках вообще все легко через курсоры разруливается.


 
by ©   (2005-07-27 18:00) [63]

Кому-то может и не нравятся JOIN-ы, но мне они кажутся намного информативнее, и код с ними наиболее наглядным и читабельным.

Это наверное вопрос привычки. Я всегда обходился условиями в where и JOIN мне был очень интуитивно не понятен )
Да и нужен он был только в случае внешнего объединения LEFT JOIN - но я всегда старался проектировать так что бы этой надобности не было.
В последнем проекте все обошлось полностью без LEFT JOIN - только =


 
pasha_golub ©   (2005-07-27 18:47) [64]

by ©   (27.07.05 18:00) [63]
Во-во, абсолютно согласен. JOIN"ы начал воспринимать исключительно из-за необходимости. Хотя не считаю их информативными, если честно...


 
Rule ©   (2005-07-28 15:35) [65]

pasha_golub ©   (27.07.05 18:47) [64]
вопрос то в том, что все равно потом движок это все в джоины переделывает


 
Reindeer Moss Eater ©   (2005-07-28 15:39) [66]

Что значит "переделывает в джойны"?

Получив текст запроса ... FieldA = FieldB(+) ...
движок сам себе его перековеркивает в текст запроса содержащего слово "Join"?

:)))


 
Rule ©   (2005-07-28 15:45) [67]

Reindeer Moss Eater ©   (28.07.05 15:39) [66]

ну оптимизатор запроса все выстраивает в джоины как бы ты не писал ...я не говорю про плюсики я говорю про условия, оптимизатор все условия переделывает в джоины (условия по связям таблиц)


 
Reindeer Moss Eater ©   (2005-07-28 16:18) [68]

Ты хочешь сказать, что Ларри Эллисон придумал специфичный для Оракла синтаксис открытых соединений для того, что бы его оптимизатор занимался переводом самому себе, со своего родного языка на язык стандарта?

Как если бы я в разговоре с тобой переводил сам себе твои фразы на русском сначала на латынь, затем обдумывал ответ на латыни, переводил бы его на русский и отвечал тебе.


 
Fay ©   (2005-07-28 17:29) [69]

2 Reindeer Moss Eater ©   (28.07.05 16:18) [68]

Не нужно юродствовать. Вы же не думаете, что движок Oracle "думает" на SQL?!


 
Reindeer Moss Eater ©   (2005-07-28 17:55) [70]

Зашибись.
А на чем он "думает", если он не "думает" на SQL?


 
Reindeer Moss Eater ©   (2005-07-28 18:06) [71]

На специфичном для Оракла синтаксисе серверу поручили выполнить открытое соединение таблиц:

... where FieldA = FieldB(+)

Что меняется для сервера, если он преобразует этот синтаксис к стандартному?

Ему будет более "понятно", что одна таблица соединяется с другой с помощью открытого соединения?
Чушь.
Ему это и так было понятно из инструкции на его родном языке.


 
Rule ©   (2005-07-28 18:16) [72]

Reindeer Moss Eater ©   (28.07.05 18:06) [71]
твоя ошибка в том что ты преподнсишь все так, как будто он к текстовому виду преобразует, а он не преобразует, и от такого как позволяет синтаксис писать толи джоин толи равно с плюсиком толи фром несолько таблиц вхере связ по ключам, от этого внутреннее объединении движком не меняется, все равно движок объединяет таблицы для выполнения запроса посредством джоинов ... но это не значит что он для себя это слово пишет, он просто объединяет


 
Reindeer Moss Eater ©   (2005-07-28 18:24) [73]

Твоя ошибка в том, что ты забыл с чего мы начали.

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

>вопрос то в том, что все равно потом движок это все в джоины переделывает

А то, что в результате получается джойн (объединение таблиц) - америку не надо было открывать.


 
Reindeer Moss Eater ©   (2005-07-28 18:26) [74]

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


 
evvcom ©   (2005-07-29 08:43) [75]


> ANB ©

Можно то можно, только вспомни ту же математику. В чем легче разобраться, что нагляднее: многоэтажная дробь или все же малоэтажная? Так или иначе, прежде, чем работать с дробью, мы ее упрощаем, т.е. приводим к одноэтажной простой дроби, ибо проще с такой работать.
Ну а насчет наглядности, мое имхо остается с явными джойнами. В join сразу видно, по каким полям вяжутся наборы, а в from и where надо еще эти связи искать. Согласен, дело вкуса.


 
Reindeer Moss Eater ©   (2005-07-29 08:47) [76]

Зато с join поди ищи список таблиц по всему запросу.
А в синтаксисе Оракла они всегда после From и нигде больше.


 
Fay ©   (2005-07-29 09:02) [77]

2 Reindeer Moss Eater ©   (29.07.05 8:47) [76]
Дык... с этого и надо было начинать! 8)
Всем, видимо, по-разному, а мне вот не очень удобно высматривать в здоровом WHERE условия соединения. При чтении глазками, естествено.
К "join-скому" запросу проще приделывать фильтры (в общем случае) - просто дописываем WHERE тра-ля-ля. C "плюсиками" надо выдирать это самое WHERE и т.д.

А если по-хорошему, то вопросы религии у нас обсуждаются в Потрепаце 8).


 
evvcom ©   (2005-07-29 09:08) [78]


> Зато с join поди ищи список таблиц по всему запросу.
> А в синтаксисе Оракла они всегда после From и нигде больше.

Не по всему, а именно после from, но с join и тут же условие связи. Каждая новая таблица с новой строки, ничего не ищется.
Всё, это последний мой пост на эту тему.


 
Reindeer Moss Eater ©   (2005-07-29 09:22) [79]

Синтаксис с джойнами допускает несколько таблиц во FROM.
Итого: часть условий объединения будет во WHERE, а часть после JOIN.
То, что вы все объединяемые таблицы пишете с новой строки ничего не меняет.
Обсуждается - то синтаксис, а не вы лично.


 
Fay ©   (2005-07-29 09:25) [80]

2 evvcom ©   (29.07.05 9:08) [78]
>> Всё, это последний мой пост на эту тему.
Поддерживаю. Случай не тяжёлый, но неизлечимый 8).



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.62 MB
Время: 0.014 c
2-1123438271
xroot
2005-08-07 22:11
2005.09.11
Список всех файлов в дирректории


3-1122800706
NickMan
2005-07-31 13:05
2005.09.11
Возможен ли такой запрос?


2-1123309367
Андрей235
2005-08-06 10:22
2005.09.11
вывести в Caption или text integer переменную или string=integer


1-1124716742
rummy
2005-08-22 17:19
2005.09.11
Запись динамического массива в нетипизированный файл


1-1124346379
Виталий1327
2005-08-18 10:26
2005.09.11
TList, освобождение памяти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский