簡體   English   中英

如何在SQL Server中查詢多對多關系

[英]How to query for many to many relationship in Sql Server

這是我的桌子 在此處輸入圖片說明

我的問題是如何獲取特定學生ID的課程名稱

我試過了但是沒用

select Course.CourseName from Course
where Course.CourseId in (

select Student.studentname ,StudentCourse.CourseId from Student inner join StudentCourse
on Student.StudentId = StudentCourse.StudentId
  where Student.StudentId = 1)

您可能會忘記我的查詢,因為我是SQL Server的新手,只要告訴我開發人員在SQL Server真實世界中究竟做了什么,以獲取特定學生的課程名稱

如您所說,您想知道這種方法,這只是基本觀點

1)我們想看看CourseName。

SELECT CourseName FROM Course

2)一個學生可能有多個課程。 3)因此,我們還有一個表StudentCourse可以實現這一目標。 4)我們必須在此表中查找CourseName的ID

SELECT CourseID FROM StudentCourse

5)查找哪個學生(X是您想要的數字)參加這些課程。

WHERE StudentID = X

6)如果我們將它們放在一起看,我們現在可以通過步驟1獲得所有的CourseName。但是,我們不需要所有的CourseName,而擁有所有X編號的學生需要的CourseID。 因此,如果我們將它們組合在一起,現在我們只需選擇X接受的CourseName。

WHERE CourseID IN

7)所以我們的最終結果是

SELECT CourseName FROM Course WHERE CourseID IN 
(SELECT CourseID FROM StudentCourse WHERE StudentID = X)

選中 一項,以查看其工作方式。

我正在使用左聯接,以防萬一您的學生沒有分配任何課程,否則,如果使用內聯接,您將不會獲得任何結果;

SELECT
s.StudentID
,s.StudentNam
,sc.CourseID
,c.CourseName
FROM Student s
LEFT JOIN StudentCourse sc
ON s.StudentID = sc.StudentID
LEFT JOIN Course c
ON sc.CourseID = c.CourseID
WHERE s.StudentID = 1

嘗試這個:

select CourseName from Course
where CourseId in 
(select CourseId from StudentCourse
where StudentId = 1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM