我有几张桌子 - 发票,Invc_tender和Invc_fee
这是我当前的查询
SELECT so.so_no, c.first_name, c.last_name, c.cust_id, i.invc_no, i.created_date, it.amt, i.invc_type, it.tender_type, it.crd_type, ife.fee_type
FROM rpro.invoice i
LEFT JOIN rpro.so so ON so.so_sid = i.so_sid
LEFT JOIN rpro.invc_tender it ON it.invc_sid = i.invc_sid
LEFT JOIN rpro.invc_fee ife ON ife.invc_sid = i.invc_sid
LEFT JOIN rpro.customer c ON c.cust_sid = i.cust_sid
WHERE i.invc_type IN (0,2) AND ife.fee_type != -2 AND i.created_date >= '2014-12-10' AND i.store_no = 0
我想要做的是,如果ii.tender_type等于7,则执行以下查询以查找并将实际值传递给it.tender_type,it.crd_type和it.amt的初始查询结果
SELECT it.tender_type, it.crd_type, it.amt
FROM rpro.so so
LEFT JOIN rpro.invoice i ON i.so_sid = so.so_sid
LEFT JOIN rpro.invc_tender it ON it.invc_sid = i.invc_sid
LEFT JOIN rpro.invc_fee ife ON ife.invc_sid = i.invc_sid
WHERE ife.fee_type = -2 AND so.so_sid = (The SO_SID of the current invoice result)
ORDER BY i.created_date desc
关于一表关系。 SO表与Invoice具有一对多的关系,Invoice与Invc_tender和Invc_fee具有一对多的关系。基本上,如果ii.tender_type = 7而不是查看当前发票,则查找附加到此SO的其他发票,该发票具有ife.fee_type = -2
这可能是一个查询或嵌套查询吗?或者这是我必须执行多个查询的事情?
答案 0 :(得分:1)
使用返回所需SO_SID的子查询