2017-06-04 72 views
0
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 

我有兩個表產品和股票。我可以在where子句中使用別名嗎?

產品表:PRODUCT_ID,PRODUCT_NAME和Product_limit

庫存:STOCK_ID,PRODUCT_ID,stock_in,stock_out

從上面的查詢,我得到的所有記錄,但我想只有那些記錄誰的產品極限達到或低於。

如果產品1有50個product_limit並且庫存達到了50個限制或低於50個,那麼請將這些記錄提供給我。

建議我最好的解決方案。

回答

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被選中的列。這也是一個很好的做法。

+0

感謝它爲我工作 –

相關問題