LEFT JOIN

Ответить
ya
^-^
Сообщения: 2822
Зарегистрирован: 16 дек 2021, 19:56

LEFT JOIN

Сообщение ya »

В MySQL оператор LEFT JOIN используется для объединения таблиц, чтобы выбрать все записи из левой таблицы и соответствующие им записи из правой таблицы. Если для записи из левой таблицы нет соответствующих данных в правой, то результат всё равно будет содержать эту запись, а значения из правой таблицы будут NULL.

Код: Выделить всё

SELECT 
    таблица1.столбец1, 
    таблица2.столбец2, 
    ...
FROM 
    таблица1
LEFT JOIN 
    таблица2
ON 
    таблица1.ключ = таблица2.ключ;
Чтобы получить список всех клиентов и их заказы (даже если у клиента заказов нет), используем LEFT JOIN:

Код: Выделить всё

SELECT 
    customers.id, 
    customers.name, 
    orders.product
FROM 
    customers
LEFT JOIN 
    orders
ON 
    customers.id = orders.customer_id;
ya
^-^
Сообщения: 2822
Зарегистрирован: 16 дек 2021, 19:56

Re: LEFT JOIN

Сообщение ya »

Код: Выделить всё

UPDATE таблица_цель AS t1
LEFT JOIN таблица_источник AS t2 ON t1.ключ = t2.ключ
SET t1.поле = значение_или_выражение
WHERE условия;
ya
^-^
Сообщения: 2822
Зарегистрирован: 16 дек 2021, 19:56

Re: LEFT JOIN

Сообщение ya »

Если нужно посчитать количество связанных строк для каждого основного объекта

Код: Выделить всё

SELECT
  t1.id,
  t1.name,
  COUNT(t2.id) AS related_count
FROM
  main_table t1
LEFT JOIN
  related_table t2 ON t1.id = t2.foreign_id AND <условие>
GROUP BY
  t1.id, t1.name;
Если нужно для каждого объекта из основной таблицы узнать число связанных строк с учетом условия:

Код: Выделить всё

SELECT
  t1.id,
  t1.name,
  (SELECT COUNT(*)
   FROM related_table t2
   WHERE t2.foreign_id = t1.id AND <условие>) AS related_count
FROM
  main_table t1;
Ответить