2013-12-04 3 views
0

Я пытаюсь получить список товаров по количеству проданных и по дате ... Я также хочу отображать продукты, которые были проданы в списке, поэтому я попытался сделать подзапрос, но MYSQL дает мне это сообщение:MYSQL: Операнд должен содержать 1 столбец

Операнд должен содержать 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') 
+0

Хотя мой ответ отвечает на вопрос в вашем названии, я думаю, что для того, чтобы вы могли решить свою реальную проблему (отображать все продукты, даже те, у которых нет продаж), вам нужно будет сделать «ЛЕВЫЙ ВНЕШНИЙ ПРИСОЕДИНЯЙТЕСЬ» 'против таблицы продуктов, чтобы просмотреть все продукты, даже те, у которых нет связанного поля с другими таблицами. –

+0

, пожалуйста, проверьте это, как я сделал то, что вы предложили, но его не работает еще http://stackoverflow.com/questions/20387760/trouble-with-left-outer-join – bmacuer

ответ

0

оператор AND рассчитывает одно значение с обеих сторон , но у вас есть следующее:

WHERE product.product_subcategory_id = $subcategory_id 
AND (... select that returns two columns) 

Первый операнд имеет вид X = Y, так что это Логическое значение, вычисляется как true или false (или NULL если поле NULL), а второй операнд не является булевой.

Чтобы заставить это работать, вы должны сделать второй операнд AND в однозначное выражение.