2011-06-01 46 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 
相关问题