2012-09-01 113 views
3

我有一個複雜的數據庫關係(對我來說它很複雜)。理論上,我認爲這是一個很好的設計,但我現在的障礙是儘可能少地查詢數據。這裏的數據庫結構,我有:使用連接的mysql不同查詢

學生表: 一些領域,如姓名,電話,電子郵件等

students_requirements表(映射表): student_id數據, requirement_id, 日期

需求表(屬於需求類型): id, requirement_type_id, 名

requirement_type表(有很多的要求): ID, 類型, 名,

好了,所以這裏是如何使用它的例子。我可以構建需求類型。一個例子就像是一個任務。每個作業都有多個要求。學生可以通過特定作業的要求,但不一定對所有作業都要求通過要求。所以我想查詢學生的所有作業。所以說在系統中輸入了50個任務,並且jon smith已經爲這些任務中的4個輸入了要求。我想通過jon smith id查詢,找到他已輸入任何要求的所有作業。

我希望這是有道理的。我唯一的猜測是使用連接,但說實話,我真的不太瞭解它們。

任何幫助將會很棒!

回答

2

試試這個:

SELECT * FROM student_table, students_requirements_table, 
requirements_table, requirement_type_table 
WHERE student_table.name = "Jon Smith" 
AND students_requirements_table.id = student_table.id 
AND requirements_table.id = students_requirements_table.requirement_id 
AND requirement_type_table.id = requirements_table.requirement_type_id; 

檢查表名是準確的,因爲我已經承擔了幾件事情(比如你的一些表名的存在是下劃線),並注意以上所有內容實際上應該是一條長線(但是這使得它在這個頁面上不可讀,所以我已經將它分成了多行)。

我目前沒有LAMP綁定設置,所以我不能嘲笑這個來測試它,而且我已經有一段時間了,因爲我必須編寫MySQL連接,但我認爲這是在右側跟蹤。

如果您需要使用LEFT JOIN,請看本頁:Left joins to link three or more tables

+2

MySQL並不需要一切都在一行。如果你需要一個地方來嘲笑它,請使用www.sqlfiddle.com。 – Barmar

+0

嘿,我意識到我背後在這個問題上回到你身邊。我只是不想讓你的幫助不被注意。這個查詢確實爲我工作。我現在的問題是通過php處理返回的信息。 NOt非常簡單:) – Sean