![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по синтасису coalesce в оракле
Rule © (2005-07-26 16:41:00)подскажите пожалуйста как сделать вот такой запрос
select coalesce (field1,0) from table1
Синтаксис Оракла требует чтоб второй параметр, в моем случае "0" тоже был полем ...
как обойти
вариант if then не подходит так как в этом случае field1 надо писать два раза, а у меня єто довольно большой подзапрос ....
подскажите пожалуйста ...
Fay (2005-07-29 09:25:00) [1]2 evvcom © (29.07.05 9:08) [78]
>> Всё, это последний мой пост на эту тему.
Поддерживаю. Случай не тяжёлый, но неизлечимый 8).
Reindeer Moss Eater (2005-07-29 09:22:00) [2]Синтаксис с джойнами допускает несколько таблиц во FROM.
Итого: часть условий объединения будет во WHERE, а часть после JOIN.
То, что вы все объединяемые таблицы пишете с новой строки ничего не меняет.
Обсуждается - то синтаксис, а не вы лично.
evvcom (2005-07-29 09:08:00) [3]
> Зато с join поди ищи список таблиц по всему запросу.
> А в синтаксисе Оракла они всегда после From и нигде больше.
Не по всему, а именно после from, но с join и тут же условие связи. Каждая новая таблица с новой строки, ничего не ищется.
Всё, это последний мой пост на эту тему.
Fay (2005-07-29 09:02:00) [4]2 Reindeer Moss Eater © (29.07.05 8:47) [76]
Дык... с этого и надо было начинать! 8)
Всем, видимо, по-разному, а мне вот не очень удобно высматривать в здоровом WHERE условия соединения. При чтении глазками, естествено.
К "join-скому" запросу проще приделывать фильтры (в общем случае) - просто дописываем WHERE тра-ля-ля. C "плюсиками" надо выдирать это самое WHERE и т.д.
А если по-хорошему, то вопросы религии у нас обсуждаются в Потрепаце 8).
Reindeer Moss Eater (2005-07-29 08:47:00) [5]Зато с join поди ищи список таблиц по всему запросу.
А в синтаксисе Оракла они всегда после From и нигде больше.
evvcom (2005-07-29 08:43:00) [6]
> ANB ©
Можно то можно, только вспомни ту же математику. В чем легче разобраться, что нагляднее: многоэтажная дробь или все же малоэтажная? Так или иначе, прежде, чем работать с дробью, мы ее упрощаем, т.е. приводим к одноэтажной простойдроби, ибо проще с такой работать.
Ну а насчет наглядности, мое имхо остается с явными джойнами. В join сразу видно, по каким полям вяжутся наборы, а в from и where надо еще эти связи искать. Согласен, дело вкуса.
Reindeer Moss Eater (2005-07-28 18:26:00) [7]Или ты хотел нам поведать страшную тайну, что сервер получив команду объединить таблицы, начинает объединять таблицы?
Reindeer Moss Eater (2005-07-28 18:24:00) [8]Твоя ошибка в том, что ты забыл с чего мы начали.
А начали мы с того, что якобы сервер все запросы приводит к джойнам.
>вопрос то в том, что все равно потом движок это все в джоины переделывает
А то, что в результате получается джойн (объединение таблиц) - америку не надо было открывать.
Rule (2005-07-28 18:16:00) [9]Reindeer Moss Eater © (28.07.05 18:06) [71]
твоя ошибка в том что ты преподнсишь все так, как будто он к текстовому виду преобразует, а он не преобразует, и от такого как позволяет синтаксис писать толи джоин толи равно с плюсиком толи фром несолько таблиц вхере связ по ключам, от этого внутреннее объединении движком не меняется, все равно движок объединяет таблицы для выполнения запроса посредством джоинов ... но это не значит что он для себя это слово пишет, он просто объединяет
Reindeer Moss Eater (2005-07-28 18:06:00) [10]На специфичном для Оракла синтаксисе серверу поручили выполнить открытое соединение таблиц:
... where FieldA = FieldB(+)
Что меняется для сервера, если он преобразует этот синтаксис к стандартному?
Ему будет более "понятно", что одна таблица соединяется с другой с помощью открытого соединения?
Чушь.
Ему это и так было понятно из инструкции на его родном языке.
Reindeer Moss Eater (2005-07-28 17:55:00) [11]Зашибись.
А на чем он "думает", если он не "думает" на SQL?
Fay (2005-07-28 17:29:00) [12]2 Reindeer Moss Eater © (28.07.05 16:18) [68]
Не нужно юродствовать. Вы же не думаете, что движок Oracle "думает" на SQL?!
Reindeer Moss Eater (2005-07-28 16:18:00) [13]Ты хочешь сказать, что Ларри Эллисон придумал специфичный для Оракла синтаксис открытых соединений для того, что бы его оптимизатор занимался переводом самому себе, со своего родного языка на язык стандарта?
Как если бы я в разговоре с тобой переводил сам себе твои фразы на русском сначала на латынь, затем обдумывал ответ на латыни, переводил бы его на русский и отвечал тебе.
Rule (2005-07-28 15:45:00) [14]Reindeer Moss Eater © (28.07.05 15:39) [66]
ну оптимизатор запроса все выстраивает в джоины как бы ты не писал ...я не говорю про плюсики я говорю про условия, оптимизатор все условия переделывает в джоины (условия по связям таблиц)
Reindeer Moss Eater (2005-07-28 15:39:00) [15]Что значит "переделывает в джойны"?
Получив текстзапроса ... FieldA = FieldB(+) ...
движок сам себе его перековеркивает в текстзапроса содержащего слово "Join"?
:)))
Rule (2005-07-28 15:35:00) [16]pasha_golub © (27.07.05 18:47) [64]
вопрос то в том, что все равно потом движок это все в джоины переделывает
pasha_golub (2005-07-27 18:47:00) [17]by © (27.07.05 18:00) [63]
Во-во, абсолютно согласен. JOIN'ы начал воспринимать исключительно из-за необходимости. Хотя не считаю их информативными, если честно...
by (2005-07-27 18:00:00) [18]Кому-то может и не нравятся JOIN-ы, но мне они кажутся намного информативнее, и код с ними наиболее наглядным и читабельным.
Это наверное вопрос привычки. Я всегда обходился условиями в where и JOIN мне был очень интуитивно не понятен )
Да и нужен он был только в случае внешнего объединения LEFT JOIN - но я всегда старался проектировать так что бы этой надобности не было.
В последнем проекте все обошлось полностью без LEFT JOIN - только =
ANB (2005-07-27 17:57:00) [19]Кстати, в блоках вообще все легко через курсоры разруливается.
ANB (2005-07-27 17:56:00) [20]
> Fay © (27.07.05 17:34) [60]
Да поправят.