2011-06-01 78 views
0

我有一個用戶建立形式的型號如下:SQL查詢拉出表單項每個值單獨一行

Form 
    id 
    title 

FormField 
    id 
    type 
    name 
    label 

FormEntry 
    id 
    form_id 
    date 

FormFieldEntry 
    id 
    form_entry_id 
    form_field_id 
    value 

我試圖制定表格的SQL查詢將有FormField標記爲列名稱,FormFieldEntry作爲值。

+1

您使用的是什麼RDBMS?你基本上在這裏要求一個「動態支點」。 – 2011-06-01 21:39:57

+0

@Joe Stefanelli:我正在使用MySQL – 2011-06-01 21:45:43

回答

1

完成您所尋求的唯一方法是使用動態SQL。您必須通過查詢列名稱並將其發送到數據庫來將SQL語句字符串組裝到代碼中。生成的SQL語句可能如下所示:

Select FFE.form_entry_id 
    , Min(Case When FF.name = 'Foo' Then FFE.value End) As `Foo` 
    , Min(Case When FF.name = 'Bar' Then FFE.value End) As `Bar` 
    , ... 
From FormFieldEntry As FFE 
    Join FormField As FF 
     On FF.id = FFE.form_field_id 
Group By FFE.form_entry_id 
相關問題