2

嗨,我有这样的表:

Persons: person_id, name 那么我有很多语言表,其中包含人们所说的语言,这些表本身只有 ID。例如:

英文:person_id

然后我还有一个表格,其中包含他们教的学校,例如分解为表格:

哈佛:person_id

为了让那些在哈佛教书并且会说英语的人,我使用以下查询:

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

这将返回会说英语并在哈佛任教的人的 ID。如何使用该结果从 person 表中获取这些人的姓名?使用 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

  • 语言_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 persons.person_id = harvard.person_id WHERE persons.person_id = "

于 2012-04-03T22:53:12.537 回答