如何将表记录显示为表头? ICH

时间:2017-06-20 05:17:01

标签: php mysql

我有这个3表:

表“属性”:

attribute_id | attribute_name
=============================
 123         | City
 456         | Phone

表“联系方式”:

email         | name
==============================
nov@gmail.com | Novri
teb@gmail.com | Tebe

表“attribute_contact”:

email         | attribute_id | value
=========================================
nov@gmail.com | 123          | London
teb@gmail.com | 456          | 555444333

注意:attribute_id& “attribute_contact”表中的电子邮件是上一个表中的外键。

问题:

使用SQL Query,是否可以像这个例子一样获得输出:

email              | City            | Phone
nov@gmail.com      | London          | NULL
teb@gmail.com      | NULL            | 555444333

City&电话是“属性”表

中的记录

2 个答案:

答案 0 :(得分:1)

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)

尝试以上查询。

希望这会对你有所帮助。

答案 1 :(得分:0)

你也可以试试这个

1)根据属性id使用CASE作为选择值。

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`