2012-07-19 69 views
0

我正在使用MYSQL。我的數據庫中有兩張桌子。如何將SQL表中的2列連接到另一個SQL表中的一列?

表1: 'courseTable' 具有兩個colums:

courseId 
courseName 

表2: 'prereqTable' 具有兩個colums:

courseId 
prereqCourseId 

在表2對應於表1中,兩個柱子到courseId。我試圖運行一個查詢,這將導致一個包含courseId的courseName和prereqCourseId的courseName的表。

我堅持在這裏:

SELECT `course`.courseName, `prereq`.prereqCourseId FROM `course` 
LEFT OUTER JOIN `prereq` 
ON `course`.courseId = `prereq`.courseId 
+0

只是加入到相同的表兩次..的 – Randy 2012-07-19 19:28:02

+0

可能重複的[加入MySQL表兩次2列= 1柱](http://stackoverflow.com/questions/11567815/join-mysql-表格兩倍於2列1列) – Guffa 2012-07-19 19:42:56

回答

1

您需要referecing參加課程表兩次prereqTable表

SELECT a.courseName,c.courseName 
FROM courseTable AS a 
LEFT OUTER JOIN prereqTable AS b ON a.courseId=b.courseId 
LEFT OUTER JOIN courseTable AS c ON b.prereqCourseId=c.courseId 
0

加入同一個表兩次是可能的,你只需要分配一個不同的別名表中的每個實例,以便您可以選擇列,具體的適當實例桌子。像這樣:

SELECT 
    `course_main`.courseName, 
    `course_prereq`.courseName AS `prereqCourseName` 

FROM `course` AS `course_main` 

LEFT OUTER JOIN `prereq` 
ON `course_main`.courseId = `prereq`.courseId 

LEFT OUTER JOIN `course` AS `course_prereq` 
ON `course_prereq`.courseId = `prereq`.prereqCourseId 
+0

您需要在第二次連接時將「prereqCourseId」作爲參考,以根據prereqCourseId獲取課程名稱..... – 2012-07-19 19:38:01

+0

修復,謝謝指出疏忽。 – cdhowie 2012-07-20 00:46:12

1

如果您想加入同一個表兩次,你必須使用別名。

SELECT p.name AS parent, c.name AS child 
    FROM relations AS r 
    LEFT JOIN nodes AS p 
    ON(p.id=r.parent) 
    LEFT JOIN nodes AS c 
    ON(c.id=r.child) 

AS是可選的,但是推薦的,因爲它提高了可讀性,並指出您不只是忘了一個逗號。比較:

SELECT a b, c d, e, f, g, h i, ... 

SELECT a AS b, c AS d, e, f, g, h AS i, ... 
+0

感謝您提供更深入的解釋 – user1370238 2012-07-20 13:50:04