Учимся LEFT JOIN в MySQL - PullRequest
       1

Учимся LEFT JOIN в MySQL

2 голосов
/ 07 сентября 2010

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

1 Ответ

4 голосов
/ 07 сентября 2010

Вы можете 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

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

...