У меня 2 таблицы:

enter image description here

А вот данные:

Продукты

enter image description here

Заказы

enter image description here

Я хочу получить такой результат:

enter image description here

Я пробовал это:

SELECT p.id, p.name, sum(o.amount) AS total
    FROM products AS p 
    INNER JOIN orders AS o ON o.product_id = p.id 
    GROUP BY p.id

Но я понял:

enter image description here

Как я могу получить ожидаемый результат?

0
Vicheanak 8 Сен 2016 в 15:25

3 ответа

Лучший ответ

Вам нужно сделать левое внешнее соединение следующим образом:

SELECT p.id, p.name, IFNULL(sum(o.amount), 0) AS total
    FROM products AS p 
    LEFT OUTER JOIN orders AS o ON o.product_id = p.id 
    GROUP BY p.id

Ключевое слово [OUTER] является необязательным и может быть опущено.

Взгляните на этот вопрос: MySQL: приведение типа NULL к 0

Но извините, это действительно так просто, вы можете гуглить по всему миру на любом языке ...

0
Community 23 Май 2017 в 12:22

Используйте левое соединение Предложение MySQL LEFT JOIN позволяет запрашивать данные из двух или более таблиц базы данных. Предложение LEFT JOIN - это необязательная часть оператора SELECT, которая появляется после предложения FROM. введите описание изображения здесь

0
Kaushik 8 Сен 2016 в 12:37
SELECT p.id,p.name,(SELECT SUM(o.amount) FROM orders o WHERE o.product_id=p.id) total
FROM products p
0
sbrbot 8 Сен 2016 в 12:39