У меня есть вопрос относительно использования UNION ALL и INNER JOIN. Я нашел несколько сообщений по этой проблеме, например here или there, но мне не удалось применить ее к моей проблеме. То, что я пытаюсь сделать, - это перечислить 1) продукты и 2) разницу между заказами и поставками. У меня есть 3 таблицы:mysql INNER/LEFT JOIN with UNION ALL
- продукт (номер, имя)
- заказов (идентификатор, продукт, стоимость)
- поставки (идентификатор, продукт, стоимость)
мне удалось получить (почти), что я хочу с помощью следующего:
SELECT product
, sum(total)
FROM (
SELECT product
, SUM(value) as total
FROM orders
GROUP BY product
union all
SELECT product
, -1 * SUM(value) as total
FROM deliveries
GROUP BY product)
as alias
GROUP BY product
ORDER BY sum(total) DESC
я получаю следующее:
- -23
- -33
Когда я хотел бы получить:
- компьютер 23
- автомобиль 33
Значение названия продукта вместо идентификатор продукта. У кого-нибудь есть решение? (Мой INNER JOIN или LEFT JOIN попытки не увенчались успехом до сих пор) Спасибо и считает
Спасибо Гордон. Это именно то, что мне нужно. Я должен подробно проанализировать этот процесс. Потому что теперь я пытаюсь добавить ограничение «WHERE» с использованием поставщика (продукт таблицы содержит фактически «поставщика») и сдерживает выбор в стране поставщика. Используя простой WHERE p.supplier = 1, я могу получить продукты поставщика 1. Но как я могу получить продукты страны 1. Я пытаюсь использовать INNER JOIN, но без успеха – NALL
@NALL. , , Вы должны задавать новые вопросы как вопрос, а не комментарии. Не забудьте указать образцы данных и желаемые результаты. –