我陷入两难境地。我正在使用CMS创建一个数据库表,其中的记录填充如下:
+------------+----------------+
| field_name | field_value |
+------------+----------------+
| your-name | Adam |
| your-email | adam@email.com |
| your-name | Ben |
| your-email | en@email.com |
+------------+----------------+
其中field_name和field_value是列名。此外,“您的姓名”和“您的电子邮件”是网页中表单的输入名称。
(还有其他列,但没有一列有唯一的行条目)
我的问题是,我如何创建一个表或视图,以便我可以从上表中找到它?
+-----------+----------------+
| your-name | your-email |
+-----------+----------------+
| Adam | Adam@email.com |
| Ben | Ben@email.com |
+-----------+----------------+
我已经考虑过制作视图并加入它们,但我似乎无法让它发挥作用。
有任何想法如何实现这个?
谢谢!
答案 0 :(得分:0)
SELECT
MAX(CASE WHEN field_name='your-name' THEN field_value END) your_name,
MAX(CASE WHEN field_name='your-email' THEN field_value END) your_email
FROM
yourtable
GROUP BY
id
请参阅小提琴here。
答案 1 :(得分:0)
你的表1是不是有这样的id列(所以(id,field_name)是这个表的主键)?
+----+------------+----------------+
| id | field_name | field_value |
+----+------------+----------------+
| 1 | your-name | Adam |
| 1 | your-email | adam@email.com |
| 2 | your-name | Ben |
| 2 | your-email | en@email.com |
+----+------------+----------------+
然后你可以做......
SELECT DISTINCT myTableAlias.id,
(SELECT field_value FROM table
WHERE id=myTableAlias.id AND field_name = 'your-name') your-name,
(SELECT field_value FROM table
WHERE id=myTableAlias.id AND field_name = 'your-email') your-email,
FROM table myTableAlias