2011-01-27 100 views
2

場景:MySQL的選擇列聯接查詢

學生可以在一個或多個類別註冊。

結構:

學生表中的列:ID,名字,姓氏,電子郵件,出生日期,年齡,性別,手機,地址

表具有列:ID,名稱

student_classes表中的列:student_id數據,類標識碼

現在蔭加入3個表:學生,班級,student_classes與內部聯接查詢:

select * 
from students inner join student_classes 
    on students.id=student_classes.student_id inner join classes 
    on student_classes.class_id=classes.id 

但我不想學生表中的所有列。我只想要名字。 我如何修改連接查詢?

+1

`SELECT *`經常被認爲是不好的做法。只選擇你需要的列。見下面的答案。 – 2011-01-27 08:08:02

回答

4

你可以這樣做:

s = students table 
sc = student_classes 
c = classes 

查詢:

select 
    sc.student_id, 
    s.firstname, 
    s.lastname 
from students s 
inner join student_classes sc on sc.student_id = s.id 
inner join classes c on c.id = sc.class_id 
+0

它運作良好,只是我還必須在上面的選擇查詢中包含「c.name」,以獲取學生的課程名稱。 – 2011-01-27 08:54:55

2

將該列置於SELECT子句中而不是*

SELECT students.firstname FROM ... 

如果仍要從其他表列,您可以列出他們太多,或使用tablename.*

1

嘗試此查詢:

select students.firstname from .... 
2
SELECT students.firstname FROM students 
INNER JOIN student_classes ON students.id = student_classes.student_id 
INNER JOIN classes ON student_classes.class_id = classes.id 

參考:http://dev.mysql.com/doc/refman/5.1/de/select.html

+0

它只給學生的名字,但我也想從其他表格的列表。 – 2011-01-27 08:51:28