我試圖返回由給定的老師教所有中等/高中課程。使用兩個表的內連接,可以正確顯示3行。當我做第二個內部連接與第三個表時,它返回6行而不是3.TSQL查詢返回雙行與內部聯接兩次
如果不使用cte,DISTINCT,如何顯示3行empid,中間班級和高中班?另外,這兩個外部表都應該與主表連接。
IF OBJECT_ID('tempdb..#empl') IS NOT NULL DROP TABLE #empl
IF OBJECT_ID('tempdb..#middlecourses') IS NOT NULL DROP TABLE #middlecourses
IF OBJECT_ID('tempdb..#highcourses') IS NOT NULL DROP TABLE #highcourses
create table #empl
(
EmpId int,
Grade int
)
insert into #empl select 1, 5
create table #middlecourses
(
EmpId int,
Grade int,
Course varchar(20)
)
insert into #middlecourses select 1, 5, 'Science'
insert into #middlecourses select 1, 5, 'Math'
insert into #middlecourses select 1, 5, 'English'
create table #highcourses
(
EmpId int,
Grade int,
Course varchar(20)
)
insert into #highcourses select 1, 5, 'Calculus'
insert into #highcourses select 1, 5, 'Physics'
insert into #highcourses select 1, 5, 'CompSci'
select e.empid, e.grade, m.course as 'MiddleCourse'
from #empl e inner join #middlecourses m
on e.empid = m.empid
and e.grade = m.grade
select e.empid, e.grade, m.course as 'MiddleCourse', h.course as 'HighCourse'
from #empl e inner join #middlecourses m
on e.empid = m.empid
and e.grade = m.grade
inner join #highcourses h
on e.empid = h.empid
and e.grade = h.grade
drop table #empl
drop table #middlecourses
drop table #highcourses
你的第二個查詢返回9行')。你認爲結果最終會成爲什麼?例如,科學應該如何與物理學相匹配,而不是CompSci? – TZHX
結果應該是3行;像兩個單獨的內部連接加入到一個結果集中。 – rbhat