2010-09-07 4 views
2

дорогой all.i новичок в веб-программировании, и до сих пор я все еще узнал о синтаксисе MySQL. сейчас я начинаю использовать LEFT JOIN способ. Я знаю, что этот метод используется для нормализации между двумя или многими таблицами. Я отправил вопрос в SO, затем я получил Answer, из-за чего меня путают. Я изменил этот ответ, но я все еще путаю, потому что он использует LEFT JOIN только для одной таблицы. можно ли использовать LEFT JOIN в одной таблице?Обучение LEFT JOIN в MySQL

ответ

4

LEFT JOIN стол с собой, как и вы можете JOIN стол с собой. Ваша цель обычно будет иной, поскольку конкретная характеристика LEFT JOIN обеспечивает строку на выходе, если, конечно, не существует соответствующей строки справа; вы можете выбрать те строки, которые были выбраны именно таким образом, проверив для NULL «другую часть» строки, часть, которая обычно поступает из правой таблицы.

Рассмотрим, например, таблицу Product с колоннами ID, первичный ключ, Name, Category и Cost; вам нужна информация о самых дешевых продуктах в своей категории. Тогда ...:

SELECT P1.Name, P1.Category, P1.Cost 
    FROM Product AS P1 
    LEFT JOIN Product AS P2 
    ON (P1.Category = P2.Category and P1.Cost > P2.Cost) 
    WHERE P2.ID IS NULL 

является примером «левое соединение таблицы для себя», который будет отвечать на «вы хотите» спецификации (если более чем один элемент имеет равную-низкую стоимость в категории вы получите их все - на самом деле запрос дает вам такие предметы, что нет предметов в их категории дешевле и не имеет чеков для предметов , равных стоимость ;-).