我一直在搜索并尝试这个查询,但我没有得到正确的结果,我仍然是学生,仍在探索mysql查询。 我有两个彼此无关的表,stock表和order_details表。 库存中的库存记录是产品ID,数量和收到或添加的日期,而订单详细说明了订单的详细信息,其中有订单的产品和数量。
现在我想从库存和订单详细信息中选择产品的所有数量,然后减去库存总量和订单明细总数。
select
(Select sum(stocks.quantity) as sq from stocks group by product_id)
-
(Select sum(order_details.quantity) as oq from order_details group by product_id) as available_quantity;
我有这个查询,但它显示错误消息 “错误代码:1242。子查询返回超过1行”
然后我有这个查询但只返回一列
select
(Select sum(stocks.quantity) as sq from stocks where stocks.product_id="2" group by product_id) -
(Select sum(order_details.quantity) as oq from order_details where order_details.product_id="2" group by product_id) as available_quantity ;
然后在减去之后,添加一个条件,其中只获取多于或等于1的avaialable_quantity。
我的桌子
CREATE TABLE stocks
(
stock_id
int(11)NOT NULL AUTO_INCREMENT,
product_id
int(11)DEFAULT NULL,
quantity
double DEFAULT NULL,
date_added
时间戳NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(stock_id
),
KEY prod_fk_idx
(product_id
),
CONSTRAINT prod_fk
FOREIGN KEY(product_id
)引用products
(prod_id
)ON更新没有操作更新无操作
);
CREATE TABLE order_details
(
order_details_id
int(11)NOT NULL,
order_id
int(11)NOT NULL,
product_id
int(11)DEFAULT NULL,
quantity
int(11)DEFAULT NULL,
price
十进制(5,2)DEFAULT NULL,
主要关键(order_details_id
)
);