2011-07-08 1 views
0

私は親子関係から日付を読み取るクエリを持っており、 テーブルこれは来る。マイクエリ:MySQL最大(isnull(date_field))または最大(coalesce(date_field))

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を実行しています

+0

は 'coalesce(max(date)、max(otherdate))'であってはなりませんか? – bfavaretto

+0

ありがとうbfavaretto、私はこの場合もうまくいくと思います – jdog

答えて

0

愚かなことに、このクエリはPHPMyAdminでしか壊れず、mysqlコマンドラインでは正常に動作します。だからここに全く問題はない!

+0

MySQL WorkbenchやSequel Pro(Macのみ)、Navicat(FOSSでない)のような通常のGUIクライアントを試してみるべきです:-) – prodigitalson