创建3个表的视图

时间:2012-03-19 14:37:03

标签: mysql

我有2个表包含一些列,另一个表我希望它的行作为视图的列。

table1
uid|atr1|atr2|atr3

table2
uid|col1|col2

profile_fields(this is a dynamic table, thats why its rows)
fid|name

profile_values
fid|uid|value

所以最后我想要一个这样的视图,每个uid有一行:

View
uid|atr1|atr2|atr3|col1|col2|name(all row names here from profile_Fields)|

和每个uid的1个输入行及其所有用户数据和值

我不明白如何使用profile_fields创建视图,因为它有行而不是列。它首先没有这个表,但不能像我上面解释的那样工作。

1 个答案:

答案 0 :(得分:0)

您应该使用数据透视表机制,例如 -

SELECT pv.*,
  MAX(IF(pf.field = 'Category1', pv.value, NULL)) AS Category1,
  MAX(IF(pf.field = 'Category2', pv.value, NULL)) AS Category2,
  MAX(IF(pf.field = 'Category3', pv.value, NULL)) AS Category3
FROM profile_values pv
  LEFT JOIN profile_fields pf
    ON pv.fid = pf.fid
GROUP BY uid

然后将此查询加入到您的表中。