Статья Автор: Деникина Н.В., Деникин А.В.

IV. Цепочка JOIN - когда таблиц больше двух

Если данные разбросаны по нескольким таблицам, мы просто пишем несколько JOIN подряд. Каждый JOIN — ещё одно «звено» цепи:
 
FROM A
  JOIN B ON A.x = B.y   - звено 1
  JOIN C ON B.z = C.w   - звено 2
  JOIN D ON C.v = D.u   - звено 3
 
Правило: каждый новый JOIN подключается к тому, что уже «на столе». Обычно — к предыдущей таблице в цепочке, но можно и к любой ранее подключённой.

Пример звезда → планета → цена → товар
Хотим увидеть: название системы, название планеты, название товара, цену покупки.

stars → .id = .star_id → planets → .id = .planet_id → prices → .product_type = .id → product_types
 
SELECT
  stars.name          AS система,
  planets.name        AS планета,
  product_types.name AS товар,
  prices.buy_price
FROM stars
  JOIN planets       ON stars.id = planets.star_id
  JOIN prices        ON planets.id = prices.planet_id
  JOIN product_types ON prices.product_type = product_types.id;
Печать