php - 在 mySQL 中加入三个表?

标签 php mysql join

我有三个这样的表:

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/

相关文章:

php - 从另一个表中选择结果作为列数组

mysql - 两列 SQL 中出现频率最高的值

sql - 加入两个sql查询

php - 删除孤立记录 - mysql

mysql连接别名同一个表

php - 带连接的 SQL 查询仅显示一个结果

javascript - php javascript 拖放

php - 检查扩展

php - 按时间戳获取值以查找变化百分比。 mysql

sql - 为什么这个查询什么都不返回?