Я работаю с плагином WordPress (formmaker), который сохраняет формы в таблице.
он имеет id
, form_id
, element_label
(идентификатор ввода), element_value
(входное значение), group_id
(идентификатор представления), date, and
ip '
Из другой таблицы я могу получить ассоциированный входной идентификатор и имя ввода
Итак, я строю свой запрос следующим образом...
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, но другие поля имеют нулевое значение...
Любая помощь приветствуется!!
Спасибо
Вы используете группу без функции агрегации, и для этого у вас есть непредсказуемый результат, вы должны использовать (фальшивую) функцию агрегации
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 и не разрешено в самой последней версии mysql и в большинстве БД.. в этом случае результат для столбца, не связанного с результатом, непредсказуем типично, является первым значением, с которым столкнулся sql двигатель для этих столбцов