Oracle SQL Developer - 如何使用JOIN获取正确的行

时间:2016-03-30 09:20:54

标签: sql oracle oracle-sqldeveloper

我需要从多个表中选择一个人的记录,我可以通过使用两个单独的状态来获得结果,但不能通过在一个语句中组合它们来做同样的事情。

这里很棘手的是,实验室表和日记表都有一个引用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;

0 个答案:

没有答案