查询GROUP_CONCAT Mysql

时间:2016-08-24 19:51:56

标签: mysql

我有以下查询以及它如何呈现完美无缺:

SELECT GROUP_CONCAT(total SEPARATOR '||') FROM (
    (
        SELECT GROUP_CONCAT(concat_ws('@', ps.name, apfps.value) ORDER BY TRIM(ps.name) SEPARATOR '||')  AS total
        FROM action_projects_finance__payment_sources AS apfps
        LEFT JOIN payment_sources AS ps ON apfps.payment_source_id = ps.id
        INNER JOIN action_projects_finance apf ON apf.id = apfps.action_projects_finance_id
        RIGHT JOIN action_projects_additive apadd ON apadd.action_project_finance_id = apfps.action_projects_finance_id
        WHERE (apfps.action_project_id = 2174)
        AND (apfps.type IN ('fund')
        ))
        UNION
        (
        SELECT GROUP_CONCAT(concat_ws('@', ps2.name, apfps2.value) ORDER BY TRIM(ps2.name) SEPARATOR '||') AS total
        FROM action_projects_additive apadd2
        INNER JOIN action_projects_finance__payment_sources apfps2 ON apadd2.action_project_finance_id = apfps2.action_projects_finance_id
        LEFT JOIN payment_sources AS ps2 ON apfps2.payment_source_id = ps2.id
        WHERE apadd2.action_project_id = 2174
        AND apfps2.type = 'fund'
        AND DATEDIFF(apadd2.date, (
        SELECT MAX(date) FROM action_projects_additive apadd3
        WHERE apadd3.type = 4 AND apadd3.action_project_id = 2174
        )) >= 1
    )
) a

最大的问题是2174中的值被静态设置为测试。

此查询只是较大查询的一列。

当您通过FROM子句的字段更改2174中的值时,匹配来自其他列的查询以及查询的位置如下所示:

SELECT (
SELECT GROUP_CONCAT(total SEPARATOR '||') FROM (
    (
        SELECT GROUP_CONCAT(concat_ws('@', ps.name, apfps.value) ORDER BY TRIM(ps.name) SEPARATOR '||')  AS total
        FROM action_projects_finance__payment_sources AS apfps
        LEFT JOIN payment_sources AS ps ON apfps.payment_source_id = ps.id
        INNER JOIN action_projects_finance apf ON apf.id = apfps.action_projects_finance_id
        RIGHT JOIN action_projects_additive apadd ON apadd.action_project_finance_id = apfps.action_projects_finance_id
        WHERE (apfps.action_project_id = action_projects.id)
        AND (apfps.type IN ('fund')
        ))
        UNION
        (
        SELECT GROUP_CONCAT(concat_ws('@', ps2.name, apfps2.value) ORDER BY TRIM(ps2.name) SEPARATOR '||') AS total
        FROM action_projects_additive apadd2
        INNER JOIN action_projects_finance__payment_sources apfps2 ON apadd2.action_project_finance_id = apfps2.action_projects_finance_id
        LEFT JOIN payment_sources AS ps2 ON apfps2.payment_source_id = ps2.id
        WHERE apadd2.action_project_id = action_projects.id
        AND apfps2.type = 'fund'
        AND DATEDIFF(apadd2.date, (
        SELECT MAX(date) FROM action_projects_additive apadd3
        WHERE apadd3.type = 4 AND apadd3.action_project_id = action_projects.id
        )) >= 1
    )
) a )
FROM action_projects

仅显示以下消息

  

'where子句'中的未知列'action_projects.id'

0 个答案:

没有答案