我有这个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&电话是“属性”表
中的记录答案 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`