我是相对较新的SQL查询,我正在尝试连接两个表以获得一个不错的数据集,但一直有一些问题。我试过两个:
SELECT wp_rg_lead.id, wp_rg_lead.created_by, wp_rg_lead_detail.field_number, wp_rg_lead_detail.value
FROM wp_rg_lead, wp_rg_lead_detail
WHERE wp_rg_lead.id = wp_rg_lead_detail.lead_id AND wp_rg_lead.form_id = '9' AND wp_rg_lead.payment_status = 'Approved'
和
SELECT wp_rg_lead.id, wp_rg_lead.created_by, wp_rg_lead_detail.field_number, wp_rg_lead_detail.value
FROM wp_rg_lead
INNER JOIN wp_rg_lead_detail
ON wp_rg_lead.id = wp_rg_lead_detail.lead_id
WHERE wp_rg_lead.form_id = '9' AND wp_rg_lead.payment_status = 'Approved'
两者都没有起作用,两者都说明了我无法做出好的SQL语句:)
基本上,其中一个表wp_rg_lead
包含一个表单ID wp_rg_lead.id
,它通过wp_rg_lead_detail
与第二个表wp_rg_lead_detail.lead_id
相关。
我基本上希望获得wp_rg_lead.created_by
并将其与众多wp_rg_lead_detail.field_number
及其关联的wp_rg_lead_detail.value
相关联。这必须基于wp_rg_lead.form_id = '9'
和wp_rg_lead.payment_status = 'Approved'
基本上我想得到一个很好的数组,最终会看起来像:
Array
(
[0] => stdClass Object
(
[id] => 301
[created_by] => 213
[field_number(1)] => [value(1)]
[field_number(2)] => [value(2)]
[field_number(3)] => [value(3)]
...
)
...
)
但我不知道如何构建SQL语句以关联field_number
和value
。我是否需要构建两个不同的语句并将它们联合起来?
最后,我希望能够对数组执行count()并让它只返回基于“已批准”状态的条目数。我的第二个查询结果为208或其他。
我很感激任何试图让这个查询起作用的帮助。这超出了我现在所理解的范围。
非常感谢!
滓
答案 0 :(得分:0)
如果我理解你在说什么,那么你就是在使用交叉表查询结果。动态交叉表查询here
有一些很好的指示如果您可以处理限制"字段编号"列到一个集合组然后像这样的查询可能有效:
SELECT
[ID],
[CREATED_BY],
[FIELD_NUMBER1] = SUM(CASE WHEN [FIELD_NUMBER] = 'FIELD_NUMBER1' THEN [FIELD_VALUE] ELSE 0 END),
[FIELD_NUMBER2] = SUM(CASE WHEN [FIELD_NUMBER] = 'FIELD_NUMBER2' THEN [FIELD_VALUE] ELSE 0 END)
....
FROM wp_rg_lead
INNER JOIN wp_rg_lead_detail
ON wp_rg_lead.id = wp_rg_lead_detail.lead_id
WHERE wp_rg_lead.form_id = '9' AND wp_rg_lead.payment_status = 'Approved'
(从你的例子中得到最后一点,根据需要进行修改)