我正在尝试按销售金额和日期获取产品订单列表。。。我还想在列表中显示尚未售出的产品,所以我尝试进行子查询,但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')
AND
运算符希望两边都有一个值,但您得到的是:
WHERE product.product_subcategory_id = $subcategory_id
AND ( ... select that returns two columns)
第一个操作数的形式为X = Y
,因此它是一个布尔值,计算结果为true
或false
(如果字段为NULL
,则为NULL
),但第二个操作数不是布尔值。
要实现这一点,您需要将AND
的第二个操作数转换为单值表达式。