|
|
|
| Встретил запрос такого вида:
"SELECT * FROM cms_news LEFT JOIN cms_news_cat USING (catid) ORDER BY newsid DESC LIMIT $conf[npagcol]"
|
По идее он должен выводить последние npagcol новостей из таблицы cms_news. Подскажите что значит LEFT JOIN и USING? Заранее большое спасибо! | |
|
|
|
|
|
|
|
для: Евгений Петров
(18.01.2006 в 15:30)
| | JOIN - это просто запятая, т.е. следующие запросы эквивалентны
SELECT * FROM cms_news JOIN cms_news_cat
SELECT * FROM cms_news, cms_news_cat
|
USING (catid) эквивалентен ON cms_news.catid = cms_news_cat.catid ON - это тоже условие WHERE только для объединяемых таблиц в много табличном запросе. Всем хорошо объединение записей, но когда условие cms_news.catid = cms_news_cat.catid не выполняется для записи - она не попадает в результирующую таблицу, например, есть у нас новости в таблице cms_news, а они могут сопровождаться рисунками, которые храняться в cms_news_cat, а могут не сопровождаться. Так вот при использовании обычного перекрётного объединения JOIN в результирующую таблицу попадут только те записи у которых есть картинки, те что без картинок не попадут, так как не будет выполняться условие cms_news.catid = cms_news_cat.catid. Вот для этого и придумали LEFT JOIN - он требует вывести все записи таблицы cms_news, даже которым нет соответствия в условии ON (ну в данном случае USING). | |
|
|
|
|
|
|
|
для: cheops
(18.01.2006 в 15:53)
| | Огромное спасибо! | |
|
|
|