1

別のテーブルの動的フィールドの区切りリストを含む結果セットを返そうとしています。動作しているように見えますが、同じ行を複数回コピーしても、結果は1行しか返されません。

これが私の質問です:

SELECT export_rules.*, GROUP_CONCAT( CAST( CONCAT( export_rule_fields.key, ': ', export_rule_fields.value ) AS char ) SEPARATOR '|') AS fields FROM export_rules
JOIN export_rule_fields ON export_rules.id = export_rule_fields.export_rule_id
WHERE export_rules.output_type = "email"
AND (export_rules.frequency = "daily" 
    AND export_rules.last_execution < TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))
    AND (export_rules.cron_expression = "25 11 * * *" 
        OR export_rules.cron_expression = "30 11 * * *" ))
OR (export_rules.frequency = "weekly" 
    AND export_rules.last_execution < TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 WEEK))
    AND (export_rules.cron_expression = "25 11 * * 5"
        OR export_rules.cron_expression = "30 11 * * 5" ))
OR (export_rules.frequency = "monthly" 
    AND export_rules.last_execution < TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 MONTH))
    AND (export_rules.cron_expression = "25 11 15 * *"
        OR export_rules.cron_expression = "30 11 15 * *" ))
GROUP BY export_rules.id

対応する式(その部分は機能します)によってcronのリストを取得し、それらをフィールドで吐き出すことになっていますが、GROUP_CONCATまたは結合にエクスポートルールごとに複数の行があるという事実はそれを捨てていると思います。

4

1 に答える 1

2

通常のJOINの代わりにLEFTJOINを使用して解決しました。以前にテストしたときは、GROUPBYexport_rules.idがありませんでした。

この問題は解決されました。

于 2013-02-15T18:49:37.893 に答える