下面有两个查询,如下所示,实际上这两个查询都在内部使用一个内部联接。现在,我想将这两个查询合并为一个,但条件是column invo_id = 2
和列invo_id
的值在表ioa_invoice_line
中。
所以三个表之间的关系
ioa_invoice_line
ioa_invoice_line_notes
IOA_INV_LINE_NOTE_MAP
以下是查询
select
e.id
, e.invo_id
, b.id
, b.inli_id
from
ioa_invoice_line e
inner join
ioa_invoice_line_notes b on e.id = b.inli_id;
select
e.id
, b.id
, b.ATTACHMENT_BLOB_ID
, b.INV_LINE_NOTE_ID
from
ioa_invoice_line_notes e
inner join
IOA_INV_LINE_NOTE_MAP b on e.id = b.INV_LINE_NOTE_ID;
ioa_invoice_line 在这里输入图像描述
发布于 2016-04-28 16:37:06
这就是我以为你会想要加入的方式。因为您正在寻找两个条件为真:
1) ioa_invoice_line.invo_id =2
2) ioa_invoice_line.invo_id的存在
因为您将检查invo_id是否等于2,所以如果它找到值为2,则可以很好地确定它是否存在。
SELECT L.id, L.invo_id, LN.id, LNM.id, LNM.attachment_blob_id, LNM.inv_line_note_id
FROM ioa_invoice_line_notes LN
INNER JOIN ioa_invoice_line L ON LN.inli_id = L.id
INNER JOIN ioa_inv_line_note_map LNM ON LN.id = LNM.inv_line_note_id
WHERE L.invo_id = 2;
它看起来就像您正在查找Notes表中的Inv Line ID、Inv Line发票ID、Line Notes ID、Line Notes Map ID和其他ID。
发布于 2016-04-28 16:41:34
查询将invo_id
上的条件集成到联接中。由于它是一个内部连接,所以在选定的记录中存在invo_id
是免费的:
select line.id id_line
, line.invo_id
, notes.id id_notes
, notes.inli_id
, map.id id_map
, map.attachment_blob_id
, map.inv_line_note_id
from ioa_invoice_line line
INNER JOIN ioa_invoice_line_notes notes on (
line.id = notes.inli_id
AND line.invo_id = 2
)
INNER JOIN ioa_inv_line_note_map map on map.id = notes.inv_line_note_id
;
https://stackoverflow.com/questions/36920298
复制相似问题