Вверх ↑
Ответов: 171
Рейтинг: 19
#1: 2011-12-15 23:00:57 ЛС | профиль | цитата
miver писал(а):
а можно немного пояснить что к чему. В часности "tab1 LEFT JOIN tab2 ON" и почему нет WHERE

Ваш изначальный запрос
#sql
SELECT tab1.name, sum(tab2.amount) FROM tab1, tab2 WHERE tab1.id = tab2.idTab1 GROUP BY 1;
Эквивалентен запросу с INNER JOIN
#sql
SELECT tab1.name, sum(tab2.amount) FROM tab1 INNER JOIN tab2
ON tab1.id = tab2.idTab1
GROUP BY 1;

INNER JOIN выводит данные с совпадающими id
В этом случае можно использовать или ON или WHERE нет особой разницы

А вот в случае с LEFT JOIN который объединяет все данные из таблиц , нужно строго следовать синтаксису и использовать ON (Это связано с тем что WHERE как то не так обрабатывает NULL который появляется при объединении таблиц где условия не совпадают... но это знать необязательно )
карма: 0

2
Голосовали:Konst, miver