2012-04-03 26 views
2

您好,我有一個像這樣的表獲取信息:使用從2代表的結果,從第三一個

人: 爲person_id,名稱 然後我有很多的langauge表,包含人們所說的語言,表格本身只有ID。例如:

英語: PERSON_ID

然後我也有一個包含他們教什麼學校,分解到表 例如表:

哈佛: PERSON_ID

爲了讓那些在哈佛教學的人也能講英語,我使用以下查詢:

SELECT * FROM english LEFT JOIN havard.person_id = english.person_id 

這將返回可以講英語並在哈佛大學教書的人的ID。我怎樣才能使用這個結果從個人表中獲取這些人的姓名?使用php很容易,但我想知道它是否也適用於mysql。

回答

2

這裏的,我認爲回答您的問題查詢:

SELECT person.name 
FROM 
    english 
    JOIN harvard ON havard.person_id = english.person_id 
    JOIN persons ON persons.person_id = harvard.person_id 

不過,我想強烈建議與目前的表結構。你不應該有很多語言表和很多學校表。這將完全無法維持...

相反,你應該有一個單一的語言表和一個學校的表。這樣一來,添加到您的表格中的新語言或學校不需要更改架構或代碼。

要處理許多一對多的關係,您可以使用類似如下的模式:

語言

  • ID
  • 名稱

學校

  • ID
  • 名稱

Language_Person

  • LANGUAGE_ID
  • PERSON_ID

School_Person

  • 學校ID
  • PERSON_ID
+0

我同意這是一個更好的模式 – JDD 2012-04-03 22:58:27

+0

謝謝你,好建議。 – Ray 2012-04-03 23:10:50

+0

它是否會改變任何一種語言基本上可以由無限數量的人講出來的語言,老師(當然理論上)也可以在無限數量的學校教授語言? – Ray 2012-04-03 23:19:42

1

SELECT PERSON.NAME FROM (英語INNER JOIN哈佛havard.person_id = english.person_id)INNER JOIN ON persons.person_id = harvard.person_id WHERE人persons.person_id =「

+0

感謝您的意見。 – Ray 2012-04-03 23:05:37

相關問題