MySQL三表聯(lián)查 1對(duì)多是一個(gè)非常常見的查詢操作,一般情況下是用來查詢一個(gè)表中的數(shù)據(jù)和另外兩個(gè)表中的關(guān)聯(lián)數(shù)據(jù)。這種操作通過JOIN語句來實(shí)現(xiàn),在SQL語句中使用LEFT JOIN、RIGHT JOIN、INNER JOIN等指令,可以實(shí)現(xiàn)不同表之間的關(guān)聯(lián)操作。
下面我們以一個(gè)學(xué)生選課系統(tǒng)為例子,實(shí)現(xiàn)一個(gè)mysql三表聯(lián)查查詢,查詢每個(gè)學(xué)生所選的所有課程和對(duì)應(yīng)的老師信息:
SELECT s.Name AS 學(xué)生姓名, c.Name AS 課程名稱, t.Name AS 老師姓名 FROM Student s LEFT JOIN CourseSelection cs ON s.Id=cs.StudentId LEFT JOIN Course c ON cs.CourseId=c.Id LEFT JOIN Teacher t ON c.TeacherId=t.Id;
上述代碼首先從學(xué)生表(Student)中獲取學(xué)生姓名,然后使用LEFT JOIN將其與選課表(CourseSelection)關(guān)聯(lián)起來,通過學(xué)生ID(StudentID)和選課表中的學(xué)生ID進(jìn)行關(guān)聯(lián)。再通過LEFT JOIN將選課表(CourseSelection)關(guān)聯(lián)到課程表(Course)上,通過選課表中的課程ID(CourseID)和課程表中的課程ID進(jìn)行關(guān)聯(lián)。最后再通過LEFT JOIN將課程表(Course)關(guān)聯(lián)到老師表(Teacher)上,通過老師ID(TeacherId)和課程表中的老師ID進(jìn)行關(guān)聯(lián)。最終獲取到每個(gè)學(xué)生所選的所有課程和對(duì)應(yīng)的老師信息,如下所示:
+------------+-----------------+-----------+ | 學(xué)生姓名 | 課程名稱 | 老師姓名 | +------------+-----------------+-----------+ | 張三 | 語文 | 王老師 | | 張三 | 數(shù)學(xué) | 李老師 | | 李四 | 英語 | 趙老師 | | 王五 | 政治 | 呂老師 | | 王五 | 歷史 | 陳老師 | | 王五 | 地理 | 馬老師 | +------------+-----------------+-----------+
通過上述mysql三表聯(lián)查的操作,我們可以輕松查詢到學(xué)生所選的所有課程和對(duì)應(yīng)的老師信息,方便學(xué)?;蛘咂渌麢C(jī)構(gòu)對(duì)學(xué)生選課情況的統(tǒng)計(jì)和分析。