我正在使用WordPress插件(formmaker)将表单提交保存在表格中。
它有id
,form_id
,element_label
(输入ID),element_value
(输入值),group_id
(提交& #39; s ID),date, and
ip`
从另一张表中,我可以获得输入ID 和输入名称
的关联所以,我正在构建我的查询......
SELECT group_id, form_id,
(case WHEN element_label = 1 THEN `element_value` END) first_name,
(case WHEN element_label = 3 THEN `element_value` END) last_name,
(case WHEN element_label = 4 THEN `element_value` END) school_email,
(case WHEN element_label = 5 THEN `element_value` END) contact_email
FROM `wp_formmaker_submits`
WHERE `form_id` = 12
GROUP BY group_id, form_id
出于某种原因,它适用于first_name,但其他字段为null ...
任何帮助都会非常感激!!
谢谢
答案 0 :(得分:1)
您正在使用group by而不使用聚合功能,因此您有不可预测的结果 你应该使用(假的)聚合函数
SELECT group_id, form_id,
min((case WHEN element_label = 1 THEN `element_value` END)) first_name,
min((case WHEN element_label = 3 THEN `element_value` END)) last_name,
min((case WHEN element_label = 4 THEN `element_value` END)) school_email,
min((case WHEN element_label = 5 THEN `element_value` END)) contact_email
FROM `wp_formmaker_submits`
WHERE `form_id` = 12
GROUP BY group_id, form_id
在sql中不推荐使用group by without aggregation函数,并且在最新版本的mysql和大多数DB中都不允许使用。 在这种情况下,没有受到攻击的结果的列的结果是不可预测的,这是sql引擎为这些列遇到的第一个值