JOIN и все с этим связанное

WoLFiks

Не курю...
JOIN и все с этим связанное

Таблицы t1 (поле связи f1) и t2 (поле связи f2) связаны 1-М (t1->t2) по приведенным полям.
Читаю про всевозможные JOIN'ы. Но до конца понять не получается пока..)
Вопрос.
SELECT t1.f1, t2.f2 FROM t2 LEFT JOIN t1 ON t1.f1=t2.f2
и
SELECT t1.f1, t2.f2 FROM t1 LEFT JOIN t2 ON t1.f1=t2.f2
- результат остается одинаковым, что с первым запросом, что со вторым.

Но хочется раз и навсегда разобраться со всеми этими join'ами, докопаться до истины и уяснить, как же все-таки все это работает.

что 1ый, что 2ой вышеприведенный SELECT Работает как и задумывалось. НО хотелось бы до конца понять в чем тогда разница? Какая таблица ставиться в левой части, зависимая (в этом примере t2) или от которой она зависит (т.е. t1)? и т.д..?
 

alpine

Новичок
WoLFiks
Можно начать с этого
Народная самодеятельность — связи таблиц в MySQL

-~{}~ 30.08.07 10:42:

Вопрос.
SELECT t1.f1, t2.f2 FROM t2 LEFT JOIN t1 ON t1.f1=t2.f2
и
SELECT t1.f1, t2.f2 FROM t1 LEFT JOIN t2 ON t1.f1=t2.f2
- результат остается одинаковым, что с первым запросом, что со вторым.
Видимо это лиш частный случай. На самом деле это два разных запроса.
 

WoLFiks

Не курю...
Можно начать с этого
Народная самодеятельность — связи таблиц в MySQL
это прочитано! Но в ней отсутствует подробное разъяснение.


На самом деле это два разных запроса.
Чем именно. Как увидеть эти различия и понять как оно дойствует до конца..!?

НО хотелось бы до конца понять в чем тогда разница? Какая таблица ставиться в левой части, зависимая (в этом примере t2) или от которой она зависит (т.е. t1)?
-~{}~ 30.08.07 20:47:

И когда лучше использовать JOIN'ы, вместо банального WHERE table1.field1=table2.field2?
 

Андрейка

Senior pomidor developer
WoLFiks
приведи плиз ~4 строки/таблица из базы, подходящие под 1-М и результаты обоих запросов по этим 4 строкам
 

alpine

Новичок
WoLFiks
Довольно наглядно с примерами описаны джоины в мануале постгреса
http://www.postgresql.org/docs/8.2/interactive/queries-table-expressions.html#QUERIES-JOIN
Дока по джоинам в мускуле
http://dev.mysql.com/doc/refman/5.0/en/join.html

-~{}~ 30.08.07 13:41:

И когда лучше использовать JOIN'ы, вместо банального WHERE table1.field1=table2.field2?
Это тоже самое что и INNER JOIN. INNER JOIN заменяется запятой а связь таблиц выносится из ON() в условие WHERE.
 

Vladson

Сильнобухер
Автор оригинала: WoLFiks
И когда лучше использовать JOIN'ы, вместо банального WHERE table1.field1=table2.field2?
Когда во второй таблице не обязательно есть "пара" (table1.field1=table2.field2)
банальный способ не даст результата, а JOIN выдаст результат

примеры
Код:
SELECT `Host`, `description`
FROM `user`, `help_topic`
WHERE `user`.`Host` = `help_topic`.`description`
Код:
SELECT `Host`, `description`
FROM `user`
LEFT JOIN `help_topic` ON `help_topic`.`description` = `user`.`Host`
 

WoLFiks

Не курю...
приведи плиз ~4 строки/таблица из базы, подходящие под 1-М и результаты обоих запросов по этим 4 строкам
Когда во второй таблице не обязательно есть "пара" (table1.field1=table2.field2)
банальный способ не даст результата, а JOIN выдаст результат
- Спасибо.
Просто не было такого случая, чтобы не было пары. Теперь уже все более менее ясно.
 

Vladson

Сильнобухер
Автор оригинала: WoLFiks
Просто не было такого случая, чтобы не было пары. Теперь уже все более менее ясно.
Так вот если не просто не было но и не может быть, то JOIN будет только мешать, если же приложение спроектировано так что это в порядке вещей, то без него не обойтись...
 
Сверху