我有以下架构:
Purchase : pur_dt | pur_amt | item_code | quantity
ItemListForSoftware : item_code | item_desc | ...
ItemListForHardware : item_code | item_desc | ...
现在,我需要根据购买的item_代码从item_desc表中的任何一个获取item_desc。
如果项代码以S开头,则应在ItemListForSoftware中查找
硬件项列表中的其他项
像这样的东西
if(item_code starts with S){
select pur_dt,pur_amt,item_desc,quantity from Purchase, ItemListForSoftware where Purchase.item_code=ItemListForSoftware.item_code
}else{
select pur_dt,pur_amt,item_desc,quantity from Purchase, ItemListForHardware where Purchase.item_code=ItemListForHardware.item_code
}
有没有一种方法可以通过单一的SQL查询做到这一点?
最佳答案
这就是你想要的吗?
select p.pur_dt, p.pur_amt,
coalesce(ifs.item_desc, ifh.item_desc) as item_desc,
p.quantity
from Purchase p left join
ItemListForSoftware ifs
on p.item_code = ifs.item_code and
p.item_code like 'S%' left join
ItemListForHardware ifh
on p.item_code = ifh.item_code and
p.item_code not like 'S%';
注意正确的
JOIN
语法。