2011-11-06 93 views
-6

我想請求幫助。我有3張桌子。第一次查詢3個mysql表

  1. students_name
  2. students_has_subjects
  3. 主題

什麼是SQL語句查詢3個表顯示student_id數據,student_name,stud_subject,在此採取學生和主題描述。

我想要2種記錄顯示方式。

首先顯示

1, Paul Mark, Math, Mathematics, Mathematics 
1, Paul Mark, English, English Language 
1, Paul Mark, Science, About Science 
2, John Mark, Math, Mathematics, Mathematics 
2, John Mark, English, English Language 
2, John Mark, Science, About Science 

第二顯示

1, Paul Mark, Math, English, Science 
2, John Mark, Math, English, Science 

下面是表3樣品和其記錄。非常感謝。

students_name table 
student_id, student_name 
1, Paul Mark 
2, John Mark 

students_has_subjects 
id, stud_name, stud_subject 

1, Paul Mark, 1 
2, Paul Mark, 2 
3, Paul Mark, 3 
4, John Mark, 1 
5, John Mark, 2 
6, John Mark, 3 

Subjects 
subject_id, subject_name, description 

1, Math, Mathematics 
2, English, English Language 
3, Science, About Science 
+4

你有什麼試過?提供家庭作業直接回應是違反本網站的性質。 – Miquel

+0

這功能嗎?如果是這樣,請標記爲這樣。一個提示,如果是:要獲得以逗號分隔的主題列表,您將需要'GROUP_CONCAT()' –

+0

規範化在這裏有點奇怪,在'students_name'和'students_has_subjects'之間鍵入學生名字,而不是鍵入'student_id '。如果你有能力改變這個模式,我會推薦這麼做 –

回答

0

您必須使用2個連接來鏈接這3個表格。 INNER JOIN表示只有那些列出的元組,每個表中存在正確的元組。沒有科目或錯誤subject_ids的學生將不會被列出。

請記住,訪問X科目的學生也會列出X次。

SELECT n.student_id, n.student_name, s.subject_name, s.description FROM student_name n INNER JOIN student_has_subjects shs ON shs.stud_name = n.student_name INNER JOIN subjects s ON shs.stud_subject = s.subject_id

如果它是你的功課,請註明它作爲一個!

+0

對不起,但這不是一項家庭作業。這是我的學校記錄項目的一部分。我會嘗試這個建議併發布結果。非常感謝。 –