1

我是相对较新的 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包含wp_rg_lead.id与第二个表相关wp_rg_lead_detail的表单 ID 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'ANDwp_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_numberand value。我是否需要构建两个不同的语句并将它们联合起来?

最后,我希望能够对数组执行 count() 并让它只返回基于“已批准”状态的条目数。我的第二个查询结果为 208 或其他结果。

我将不胜感激尝试使此查询正常工作的任何帮助。这超出了我现在的理解。

万分感谢!

特雷

4

1 回答 1

0

如果我明白你在说什么,那么你就是在交叉表查询结果之后。这里有一些关于动态交叉表查询的好建议

如果您可以处理将“字段编号”列限制为一组组,那么这样的查询可能会起作用:

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'

(从您的示例中得到最后一点,根据需要进行修改)

于 2012-04-04T22:13:56.490 回答