0

我试图按销售量和日期获取产品订单列表...我还想显示列表中尚未售出的产品,所以我尝试进行子查询,但 MYSQL 给了我这个消息:

操作数应包含 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')
4

1 回答 1

0

AND操作员期望两边都有一个值,但你有这个:

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

第一个操作数的形式为X = Y,因此这是一个布尔值,其计算结果为trueor false(或者NULL如果该字段为NULL),但第二个操作数不是布尔值。

为了让它工作,你需要将第二个操作数AND变成一个单值表达式。

于 2013-12-04T22:22:46.840 回答