gpt4 book ai didi

php - 联系表7数据库扩展查询

转载 作者:行者123 更新时间:2023-11-29 08:15:32 27 4
gpt4 key购买 nike

我正在使用以下查询:

SELECT `submit_time` AS 'Submitted',
max(if(`field_name`='your-name', `field_value`, null )) AS 'your-name',
max(if(`field_name`='your-email', `field_value`, null )) AS 'your-email',
max(if(`field_name`='your-phone', `field_value`, null )) AS 'your-phone',
max(if(`field_name`='Submitted From', `field_value`, null )) AS 'Submitted From',
GROUP_CONCAT(if(`file` is null or length(`file`) = 0, null, `field_name`)) AS 'fields_with_file'
FROM `wp_cf7dbplugin_submits`
WHERE `form_name` = 'test form'
GROUP BY `submit_time`
ORDER BY `submit_time` DESC
LIMIT 0,100

这返回了前 100 行(所有字段值都存在)。

我想要的是得到一个特定的行。为此,我在 WHERE 子句部分附加了上面的查询,并添加了这一行 ( AND field_name='your-email' AND field_value = 'test@gm.com') 。现在最终的查询是:

SELECT `submit_time` AS 'Submitted',
max(if(`field_name`='your-name', `field_value`, null )) AS 'your-name',
max(if(`field_name`='your-email', `field_value`, null )) AS 'your-email',
max(if(`field_name`='your-phone', `field_value`, null )) AS 'your-phone',
max(if(`field_name`='Submitted From', `field_value`, null )) AS 'Submitted From',
GROUP_CONCAT(if(`file` is null or length(`file`) = 0, null, `field_name`)) AS 'fields_with_file'
FROM `wp_cf7dbplugin_submits`
WHERE `form_name` = 'test form' AND field_name=your-email AND field_value = 'test@gm.com'
GROUP BY `submit_time`
ORDER BY `submit_time` DESC

但它只返回您的电子邮件值,其他字段值变为NULL(例如您的姓名字段为NULL)。

有人知道如何执行此操作/在哪里可以找到解决方案吗?

最佳答案

您开始的查询是一个汇总查询(它有一个GROUP BY子句和一堆聚合函数,例如MAXGROUP_CONCAT )。您查询的表是标签值表。也就是说,行包含

 submit-time    form-name   field-name    field-value
(time) test-form your-email test@gm.com
(time) test-form your-name Priya the Tester

等等。您开始的查询的目的是“旋转”该表,即将其转换为包含这样的行的结果集。它通过使用 GROUP BY Submit-time 关联表中的各个行来实现这一点(在繁忙的系统中,这是一种非常糟糕的方法,但没关系)。旋转的行看起来大约像这样。

    submit-time your-email     your-name
(time) test@gm.com Priya the tester

因此,要仅选择此“结果”的一个“行”,您需要比仅过滤原始表的行更聪明一点。你可以试试

 SELECT * 
FROM (
/* the entire original query */
) AS pivoted
WHERE pivoted.`your-email` = 'test@gm.com'

它的效率不会很高,但它会起作用。

关于php - 联系表7数据库扩展查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682250/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com