我有三个这样的表:
人
id | name | location
-----------------------
1 | ABC | Location1
2 | XYZ | Location2
联系方式
id | type | contact
---------------------------
1 | website | abc.com
2 | email | abc@abc.com
3 | website | xyz.com
4 | email | xyz@xyz.com
联系人
Person_id | Contact_id
-----------------------
1 | 1
1 | 2
2 | 3
2 | 4
我想得到这样的结果:
id | name | website | email
----------------------------------
1 | ABC | abc.com | abc@abc.com
2 | XYZ | xyz.com | xyz@xyz.com
最佳答案
有几种方法可以做到这一点,但这里有一个简单的方法用于 MySQL
SELECT
p.id,
p.name,
MAX(IF(c.type = 'website', c.contact, NULL)) AS 'website',
MAX(IF(c.type = 'email', c.contact, NULL)) AS 'email'
FROM
Person p INNER JOIN
PersonContact pc ON p.id = pc.Person_ID INNER JOIN
Contact c ON pc.contact_id = c.id
GROUP BY p.id
关于php - 在 mySQL 中加入三个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9217209/