Запрос Q033. В этом примере два вышеприведенных
запроса (q031 и q032) использованы как подзапросы. Результаты этих
запросов методом LEFT JOIN объединены в один отчет. Следующий запрос
выводит отчет о количестве и сумме поступивщих и реализованных продуктов
по каждому поставщику. Следует обратить внимание на то, что если
какой-то товар уже поступил, но еще не реализован, то клетка outcome_sum
для этой записи будет пустой. Также необходимо отметить, что данный
запрос служит только примером использования относительно сложных
запросов в качестве подзапроса. Производительность данного запроса SQL
при большом объеме данных сомнительна:
SELECT * FROM (SELECT supplier_id, product_id, SUM(amount) AS amount_sum, SUM(amount*price) AS income_sum FROM m_income AS a INNER JOIN m_product AS b ON a.product_id=b.id GROUP BY supplier_id, product_id) AS a LEFT JOIN (SELECT supplier_id, product_id, SUM(amount) AS amount_sum, SUM(amount*price) AS outcome_sum FROM m_outcome AS a INNER JOIN m_product AS b ON a.product_id=b.id GROUP BY supplier_id, product_id) AS b ON (a.product_id=b.product_id)
AND (a.supplier_id=b.supplier_id);