使用2个表中的结果从第3个表中获取信息

时间:2012-04-03 22:41:44

标签: mysql sql

你好我有这样的表:

人: person_id,名称 然后我有很多langauge表,其中包含人们说的语言,表本身只有ID。例如:

英语: 为person_id

然后我还有一张桌子,其中包含他们教授的学校,分为桌子 例如:

哈佛: 为person_id

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

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

这将返回可以说英语并在哈佛教授的人的身份证。如何使用该结果从人员表中获取这些人的姓名?用php很容易,但是我想知道它是否也适用于mysql。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

SELECT person.name 从     (英语INNER JOIN harvard ON havard.person_id = english.person_id)INNER JOIN人员on persons.person_id = harvard.person_id WHERE persons.person_id =“