我正在尝试获取另一个表中缺少条目的记录的结果。我已经尝试过使用NOT IN而不是EXIST但我无法获得理想的结果。输出应该是美国签证,因为我的用户在表tbl_personnel_documents上没有美国签证,但我总是得到一个空行。
注意:我试图通过仅使用vessel_id和lastJoinedVsl来获得结果,在这种情况下,id为4号。
这是我的代码和示例数据: http://sqlfiddle.com/#!9/46790e/1
请帮忙。 非常感谢
答案 0 :(得分:0)
查询应为:
SELECT tpi.name, td.documentName
FROM tbl_documents AS td
LEFT JOIN tbl_personnel_documents AS tpd ON td.id=tpd.document_id
LEFT JOIN tbl_personnel_info AS tpi ON tpd.personnel_id=tpi.id
and tpi.lastJoinedVsl = 4 and tpi.emp_status = 'ON-BOARD'
LEFT JOIN tbl_contracts AS tc ON tpi.id=tc.personnel_id
and tc.personnel_status = 'ACTIVE' AND tc.vessel_id = 4
LEFT JOIN tbl_vessels AS tv ON tpi.lastJoinedVsl=tv.id
WHERE NOT EXISTS (SELECT tpd.document_id
FROM tbl_personnel_documents AS tpd
WHERE td.id = tpd.document_id
)
请注意
您对用于Where
的表格使用LEFT JOIN
条件是错误的,它们应该在我使用的JOIN
条件中使用。