[英]Query to join two tables by mapping third table without returning all records from third table in Oracle
我有3張桌子:
表Maths
:
ID Marks1
(1 , 80)
表English
:
ID Marks2
(2 , 85)
表Student
:
ID Name
(1 , Raj)
(2 , Sam)
(3 , John)
我需要一個SQL查詢(Oracle)以獲取以下輸出:
ID Name Marks1 Marks2
(1 , Raj , 80 , (null))
(2 , Sam , (null) , 85)
我寫的一些查詢:
select B.ID, B.Name, A.Marks1, C.Marks2 from
(select ID, Marks1 from Maths) A
full join Student B on B.ID=A.ID
left join (select ID, Marks2 from English) C
on C.ID=B.ID
但是此查詢從Student表返回了我不需要的所有記錄。 我只需要數學和英語表中的記錄。 請幫我。
只需將FULL JOIN
(完全外部FULL JOIN
-在任何一個表中都有一行時返回記錄)更改為JOIN
(內部JOIN
-僅在兩個表中都存在該行時JOIN
)
您需要在表格MATHS
, ENGLISH
中至少有一個存在學生ID的行。 這些查詢提供您想要的輸出:
select id, s.name, m.Marks1, e.Marks2
from maths m
full join english e using (id)
join student s using (id);
...要么:
select s.id, s.name, m.Marks1, e.Marks2
from student s
left join english e on e.id=s.id
left join maths m on m.id = s.id
where e.id is not null or m.id is not null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.