Соединения

RIGHT JOIN

RIGHT JOIN - правое внешнее соединение. Работает как JOIN, но если для строки таблицы, находящейся по правую сторону ключевого слова RIGHT JOIN, не нашлось ни одной строки в таблице, находящейся по левую сторону RIGHT JOIN, то строка все равно добавляется в результат, а значения столбцов левой таблицы равны null.

Запрос с LEFT JOIN

SELECT pp.product_id,
       pp.store_id,
       pp.price,
       ppl.store_id AS store_id_less,
       ppl.price AS price_less
  FROM product_price pp
  LEFT JOIN
       product_price ppl
    ON ppl.product_id = pp.product_id
   AND ppl.store_id != pp.store_id
   AND ppl.price < pp.price - 1500
 ORDER BY pp.product_id,
          pp.store_id,
          ppl.store_id,
          ppl.price

можно легко переписать на RIGHT JOIN, просто поменяв таблицы местами:

SELECT pp.product_id,
       pp.store_id,
       pp.price,
       ppl.store_id AS store_id_less,
       ppl.price AS price_less
  FROM product_price ppl
  RIGHT JOIN
       product_price pp
    ON ppl.product_id = pp.product_id
   AND ppl.store_id != pp.store_id
   AND ppl.price < pp.price - 1500
 ORDER BY pp.product_id,
          pp.store_id,
          ppl.store_id,
          ppl.price
product_idstore_idpricestore_id_lessprice_less
130010500.00
130112500.0030010500.00
180012000.00
250026100.00
...............

P.S. Мы на практике RIGHT JOIN почти не используем, LEFT JOIN воспринимается в запросах гораздо проще (если в предложении FROM сначала идет основная таблица, от которой строится логика получения остальных данных).

    ПредыдущаяСледующая