Php 如何将表记录显示为表头?脑出血
我有3张桌子: 表“属性”: 表“联系人”: 表“属性\联系人”: 注意:“attribute\u contact”表中的attribute\u id和email是前两个表中的外键Php 如何将表记录显示为表头?脑出血,php,mysql,Php,Mysql,我有3张桌子: 表“属性”: 表“联系人”: 表“属性\联系人”: 注意:“attribute\u contact”表中的attribute\u id和email是前两个表中的外键 问题: 使用SQL查询,是否可以获得如下示例所示的输出: email | City | Phone nov@gmail.com | London | NULL teb@gmail.com | NULL | 5
问题:
使用SQL查询,是否可以获得如下示例所示的输出:
email | City | Phone
nov@gmail.com | London | NULL
teb@gmail.com | NULL | 555444333
城市和电话是“属性”表中的记录
尝试上面的查询
希望这对你有帮助。你也可以试试这个 1) 根据属性id选择值的用例 2) 内部联接以从两个表中选择数据
SELECT atc.email,
CASE WHEN atc.`attribute_id` = 123 then `value` else NULL END AS CITY,
CASE WHEN atc.`attribute_id` = 456 then `value` else NULL END AS Phone
FROM `attribute_contact` atc INNER JOIN attribute at ON atc.`attribute_id` = at.`attribute_id`
email | attribute_id | value
=========================================
nov@gmail.com | 123 | London
teb@gmail.com | 456 | 555444333
email | City | Phone
nov@gmail.com | London | NULL
teb@gmail.com | NULL | 555444333
SELECT
AC.email,
CASE WHEN AT.attribute_name='CITY' THEN AC.value ELSE NULL END CITY,
CASE WHEN AT.attribute_name='Phone' THEN AC.value ELSE NULL END PHONE
FROM attribute_contact AC
INNER JOIN attribute AT ON (AC.attribute_id =AT.attribute_id)
SELECT atc.email,
CASE WHEN atc.`attribute_id` = 123 then `value` else NULL END AS CITY,
CASE WHEN atc.`attribute_id` = 456 then `value` else NULL END AS Phone
FROM `attribute_contact` atc INNER JOIN attribute at ON atc.`attribute_id` = at.`attribute_id`