你好我有这样的表:
人: person_id,名称 然后我有很多langauge表,其中包含人们说的语言,表本身只有ID。例如:
英语: 为person_id
然后我还有一张桌子,其中包含他们教授的学校,分为桌子 例如:
哈佛: 为person_id
为了让那些在哈佛教授并且会说英语的人,我使用以下查询:
SELECT * FROM english LEFT JOIN havard.person_id = english.person_id
这将返回可以说英语并在哈佛教授的人的身份证。如何使用该结果从人员表中获取这些人的姓名?用php很容易,但是我想知道它是否也适用于mysql。
答案 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
但是,我会强烈推荐您当前的表格结构。你不应该有很多语言表,还有很多学校表。这将完全无法维持......
相反,您应该有一个语言表和一个学校表。这样,添加到表中的新语言或学校不会要求架构或代码更改。
要处理多对多关系,您可以使用类似于以下的模式:
<强>语言强>
<强>学校强>
<强> Language_Person 强>
<强> School_Person 强>
答案 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 =“