SELECT sum(st.stock_in) - sum(st.stock_out) as'stock_qty',
p.product_name,p.product_limit
FROM stock as st
join products as p
on p.product_id=st.product_id
where 'stock_qty' < 'p.product_limit'
GROUP BY st.product_id
我有两个表产品和库存。
产品表:Product_id,Product_name和Product_limit
股票:stock_id,Product_id,stock_in,stock_out
从上面的查询我得到所有记录,但我想只获得那些达到或低于产品限制的记录。
如果产品1有50 product_limit且库存达到50限制或低于50限制,请告诉我这些记录。
建议我最好的解决方案。
答案 0 :(得分:1)
你不能:
where
子句中使用别名。where
子句中使用聚合函数。虽然几乎不建议比较两个字符串,但是允许这样做。
但是,无论如何你想要一个having
条款,所以标题中的问题是无关紧要的。试试这个:
select sum(st.stock_in) - sum(st.stock_out) as stock_qty,
p.product_name, p.product_limit
from stock st join
products p
on p.product_id = st.product_id
group by p.product_name, p.product_limit
having stock_qty < p.product_limit ;
请注意,我更改了group by
以匹配select
中所选的列。这也是一种很好的做法。