2012-03-19 118 views
0

我有2個表與一些列和另一個表,我想它的行作爲視圖的列。創建一個3表的視圖

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那樣的視圖,1行:用於與它的所有用戶數據的每個UID

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

和1個條目行和值

我不明白如何使用profile_fields製作視圖,因爲它具有行而不是列。它首先在沒有這張表的情況下工作,但不能像我上面解釋的那樣工作。

+0

你可以更具體地說'profile_fields'嗎?提供表結構和數據示例。 – Devart 2012-03-19 15:13:18

+0

我認爲這不被支持,你可以在這裏閱讀:select_statement可以從基表或其他視圖中選擇(http://dev.mysql.com/doc/refman/5.1/en/create-view.html)。 – user1027167 2012-03-19 15:17:30

+0

profile_fields(列fid |名稱) 並且有一些行,例如1 | category1,2 | category2,3 | category3等 – heav3n 2012-03-20 11:57:06

回答

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 

然後將此查詢加入到您的表中。