我有一个用于用户构建表单的模型,如下所示:

Form
  id
  title

FormField
  id
  type
  name
  label

FormEntry
  id
  form_id
  date

FormFieldEntry
  id
  form_entry_id
  form_field_id
  value


我正在尝试在Form上制定一个SQL查询,该查询将具有FormField标签作为列名和FormFieldEntry的值。

最佳答案

完成您寻求的目标的唯一方法是使用动态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

08-19 07:11