SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.09.2012 05:25:20

animegirl
Активист
Зарегистрирован: 28.07.2011
Сообщений: 288

Не до конца понимаю, когда надо подставлять RIGHT OUTER JOIN а когда LEFT OUTER JOIN

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

Вообще смысл таков. В таблице А будет выбрана только одна строчка, в таблицах Б,В,Г,Д могут быть выбраны от 0 до n строчек. Сейчас я их через LEFT подцепила, но задумалась о правильности


Скажи миру - НЯ!

Неактивен

 

#2 12.09.2012 10:18:12

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Не до конца понимаю, когда надо подставлять RIGHT OUTER JOIN а когда LEFT OUTER JOIN

Посылки а и б неверные. LEFT JOIN и RIGHT JOIN дадут разный результат запроса. Конечный WHERE применяется после джойна и может относиться к любой из таблиц.

Пусть есть таблицы A,B, а их строки будем обозначать a,b. Пусть JOIN выполняется по колонке id.

1) A JOIN B USING(id)
будут выбраны все пары (a, b) такие, что a.id=b.id. То есть, если в таблице B некоторой строке a1 из A соответствует 3 разных строки b1,b2,b3, то будут выбраны три пары (a1,b1), (a1,b2), (a1,b3)

2) A LEFT JOIN B USING(id)
результат будет содержать все строки из INNER JOIN плюс еще те строки из A, которым нет соответствия из B. Пусть такая строка a2. Тогда результатом будут строки (a1,b1), (a1,b2), (a1, b3), (a2, NULL).

3) A RIGHT JOIN B USING(id) то же самое, что B LEFT JOIN A USING(id)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson