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

Вниз

JOIN без ON   Найти похожие ветки 

 
И. Павел ©   (2011-10-28 12:04) [0]

Здравствуйте.
Насколько допутимой и рекомендуемой является в MS SQL SERVER конструкция:

FROM tab1 AS t1
LEFT JOIN tab2 AS t2 ON 1=1
LEFT JOIN tab3 AS t3 ON t3.id = ...

Т.е. я просто хочу "умножить" две таблицы: t1 и t2. Можно перечислить их через запятую в предложении FROM, но такая конструкция считается устаревшей, да и придется тогда писать вложенный запрос внутри FROM - а это выглядит не так красиво. Но смущает то, что в JOIN обязательно должен быть блок ON, т.е. в синтаксисе не предусмотрено использовать JOIN вхолостую.

Заранее спасибо.


 
han_malign   (2011-10-28 12:09) [1]


> в синтаксисе не предусмотрено использовать JOIN вхолостую.

- предусмотрено - используются все поля с одинаковым именем(/форматом)...


> "умножить" две таблицы: t1 и t2.

- CROSS JOIN


 
vuk ©   (2011-10-28 12:11) [2]

select
...
from
Table1 t1 cross join
Table2 t2


 
И. Павел ©   (2011-10-28 12:23) [3]

han_malign, vuk ©, большое спасибо!


 
Омлет ©   (2011-10-28 12:41) [4]

select * from Table1 t1, Table2 t2;


 
И. Павел ©   (2011-10-28 12:57) [5]

> [4] Омлет ©   (28.10.11 12:41)

Спасибо, это тоже вариант.


 
Труп Васи Доброго ©   (2011-10-28 14:57) [6]


> Спасибо, это тоже вариант.

Это не "вариант", только Омлет предложил именно умножение независимое от варианта SQL и СУБД


 
Компромисс   (2011-10-28 17:11) [7]

Почему CROSS, а не FULL?


 
И. Павел ©   (2011-10-31 07:03) [8]

> [7] Компромисс   (28.10.11 17:11)
> Почему CROSS, а не FULL?

Насколько я понял из справки - full join возхвращает не только inner (что мне нужно) но и по одной записи от каждой таблицы, для которой не нашлось аналога в другой. Т.е. это смешение right+left join. Ну и еще для full join нужно указывать условие.

Вот цитата из википедии:
"FULL OUTER JOIN
К левой таблице присоединяются все записи из правой, соответствующие условию (по правилам inner join), плюс все не вошедшие записи из правой таблицы, поля левой таблицы заполняются значениями NULL и плюс все не вошедшие записи из левой таблицы, поля правой таблицы заполняются значениями NULL"


 
Anatoly Podgoretsky ©   (2011-10-31 08:51) [9]

> И. Павел  (31.10.2011 07:03:08)  [8]

А вот из авторитетного источника

FULL OUTER JOIN, which includes all rows from both tables, regardless of
whether or not the other table has a matching value.

И вот оттуда же, но на русском

Логический оператор Full Outer Join возвращает каждую строку,
удовлетворяющую предикату объединения из первого (верхнего) входа и
объединенную с каждой строкой из второго (нижнего) входа. Он также
возвращает строки из:

 a.. первого входа, не имеющего соответствий во втором входе;

 b.. второго входа, не имеющего соответствий в первом входе.

 Вход, не содержащий совпадающих значений, возвращается как значение NULL.
Full Outer Join является логическим оператором.



И никакого требования указания условия. Ты поосторожнее с этой дурипедией



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

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

Наверх





Память: 0.47 MB
Время: 0.005 c
3-1272022775
Kobylyansky
2010-04-23 15:39
2012.02.19
Firebird+тип сервера


15-1319418009
RGV
2011-10-24 05:00
2012.02.19
Посоветуйте хороший смартфон/комуникатор


15-1319773357
Думкин
2011-10-28 07:42
2012.02.19
Задача, пятничное


15-1319989105
Кто б сомневался
2011-10-30 18:38
2012.02.19
Кажись уже есть компилятор Delphi x64?


15-1320263467
GreyWolf83
2011-11-02 22:51
2012.02.19
UTF-8 сравнение строк без учета регистра???





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский