0

我有一个查询从父/子关系读取日期,我需要按日期的最大值对记录进行分组,无论这来自哪个表。我的查询:

SELECT child.id as id, 
       MAX(pm.start), 
       MAX(membership.start),
       MAX(IFNULL(pm.start,membership.start)) AS start 
FROM   organisation child
LEFT JOIN organisation pmorg ON child.parent_organisation_id = pmorg.id
LEFT JOIN membership ON child.id = membership.organisation_id
LEFT JOIN membership pm ON pmorg.id = pm.organisation_id

WHERE child.id IN (1,3) AND /*just look at example records*/

    coalesce(pm.start,membership.start) IS NOT NULL AND
    ((membership.active = 1 AND membership.amount_paid > 0.00 ) OR
     (pm.active = 1 AND pm.amount_paid > 0.00))

GROUP BY child.id

我的输出很奇怪:

1       NULL                    2011-07-01 00:00:00 323031312d30372d30312030303a30303a3030
3       2011-07-01 00:00:00     NULL                323031312d30372d30312030303a30303a3030

我需要最后一列是 2011-07-01 并且我需要两行。知道为什么 max(coalesce()) 不起作用吗?我正在运行 MySQL 5.1

4

1 回答 1

0

愚蠢的是,这个查询只在 PHPMyAdmin 中中断,并且在 mysql 命令行中完全正常。所以这里根本没有问题!

于 2011-07-08T04:42:47.503 回答