我需要从多个表中选择一个人的记录,我可以通过使用两个单独的状态来获得结果,但不能通过在一个语句中组合它们来做同样的事情。
这里很棘手的是,实验室表和日记表都有一个引用MPlan表的外键,但它们之间没有任何关系。
我怎样才能做到这一点?我需要在一个声明中做到这一点。
--I get 2 rows by running the codes below
SELECT *
FROM Participant p, PCASE pc, Meeting m, MPlan mp, Laboratory l
WHERE p.PartID=pc.PartID
AND pc.PCaseNo=m.PCaseNo
AND (m.PCaseNo=mp.PCaseNo
AND m.MeetingNo=mp.MeetingNo)
AND mp.MPlanNo=l.MPlanNo
AND p.PartID=12345;
--I get 4 rows by running the codes below
SELECT *
FROM Participant p, PCASE pc, Meeting m, MPlan mp, Diary d
WHERE p.PartID=pc.PartID
AND pc.PCaseNo=m.PCaseNo
AND (m.PCaseNo=mp.PCaseNo
AND m.MeetingNo=mp.MeetingNo)
AND mp.MPlanNo=d.MPlanNo
AND p.PartID=12345;
--but I get 38 rows by running the below codes, apparently it is not correct
SELECT *
FROM Participant p, PCASE pc, Meeting m, MPlan mp, Laboratory l, Diary d
WHERE p.PartID=pc.PartID
AND pc.PCaseNo=m.PCaseNo
AND (m.PCaseNo=mp.PCaseNo
AND m.MeetingNo=mp.MeetingNo)
AND (mp.MPlanNo=l.MPlanNo OR mp.MPlanNo=d.MPlanNo)
AND p.PartID=12345;