Я пытаюсь получить список заказов на продукцию по количеству проданных и по дате. Я также хочу, чтобы отобразить продукты, которые не были проданы в списке, так что я пытался делать подзапрос первый, но MYSQL дает мне это сообщение:Проблема с LEFT OUTER JOIN
Операнд должен содержать 1 столбец (ы)
SELECT product.product_id,
product.product_brand_id,
product.product_model_id,
product.product_subcategory_id,
product.product_retail_price,
product.product_wholesale_price
FROM product
WHERE product.product_subcategory_id = $subcategory_id
AND (SELECT SUM(product_sold.product_quantity) AS product_quantity_sold,
SUM(product_sold.product_total_price) AS total_price_sold
FROM product
INNER JOIN product_sold
ON product.product_id = product_sold.product_id
INNER JOIN sales
ON sales.sales_id = product_sold.product_sales_id
WHERE sales.sales_approved = '1'
AND sales.sales_approved_time > '$start_timestamp'
AND sales.sales_approved_time < '$end_timestamp')
подзапрос не работает, поэтому я попытался использовать LEFT OUTER JOIN
как предложил другой член с этим запросом:
SELECT product.product_id,
product.product_brand_id,
product.product_model_id,
product.product_subcategory_id,
product.product_retail_price,
product.product_wholesale_price,
SUM(product_sold.product_quantity) AS product_quantity_sold,
SUM(product_sold.product_total_price) AS total_price_sold
FROM product
LEFT OUTER JOIN product_sold ON product.product_id = product_sold.product_id
AND product.product_subcategory_id = $subcategory_id
LEFT OUTER JOIN sales ON sales.sales_id = product_sold.product_sales_id
WHERE sales.sales_approved = '1'
AND sales.sales_approved_time > '$start_timestamp'
AND sales.sales_approved_time < '$end_timestamp'
GROUP BY product.product_id
ORDER BY SUM(product_sold.product_quantity) DESC
Но этот запрос с LEFT OUTER JOIN
дает мне список продукции продается только то, что я хочу, чтобы также показать продуктов, которые не были проданы в списке.
Вот схема, используемая sqlfiddle.com/#!2/967ee
Насколько я могу судить, простая 'LEFT JOIN' - это то, что вам нужно. – OGHaza
Если я сделаю ЛЕВЫЙ ПРИСОЕДИНЯЮ, я получаю тот же результат, если появятся только проданные товары. – bmacuer
Я бы сказал, что LEFT OUTER JOIN должен работать ... (я не понимаю разницы между product_sold и btw продаж). Может быть, вы можете предоставить используемую схему? – luckylwk