2

こんにちは私はこのようなテーブルを持っています:

Persons:person_id、name それから私は人々が話す言語を含む多くの言語テーブルを持っています、テーブル自体はIDだけを持っています。例えば:

英語:person_id

それから私は彼らが教えている学校を含むテーブルも持っています、例えばテーブルに分解されます:

havard:person_id

havardで教え、英語も話す人々を獲得するために、私は次のクエリを使用します。

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

これにより、英語を話し、ハーバードで教えている人のIDが返されます。その結果を使用して、personsテーブルからそれらの人々の名前を取得するにはどうすればよいですか?phpを使えば簡単ですが、mysqlでも実行できるのではないかと思います。

4

2 に答える 2

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

  • School_ID
  • Person_ID
于 2012-04-03T22:49:48.247 に答える
1

SELECT person.name FROM(english INNER JOIN harvard ON havard.person_id = english.person_id)INNER JOIN people ON people.person_id = harvard.person_id WHERE people.person_id = "

于 2012-04-03T22:53:12.537 に答える