如果查询等于某个值,则子查询找到另一个值

时间:2014-12-15 23:49:11

标签: mysql

我有几张桌子 - 发票,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

这可能是一个查询或嵌套查询吗?或者这是我必须执行多个查询的事情?

1 个答案:

答案 0 :(得分:1)

使用返回所需SO_SID的子查询