0
を与えるものではありません:複数のkulturbezで一致した場合は、私は、次のSQLを持っている私に期待される結果
SELECT t.teilnehmer_id, t.familienname, t.vorname, t.ort, t.ortsteil, t.kontrolle_ertrag, t.kontrolle_1j, t.kontrolle_brache,
SUM(fe.nutzflaeche) AS nutzflaeche_ertrag, GROUP_CONCAT(fe.nutzflaeche) AS einzelfl_ertrag,
SUM(fp.nutzflaeche) AS nutzflaeche_pflanzj, GROUP_CONCAT(fp.nutzflaeche) AS einzelfl_pflanzj,
SUM(fb.nutzflaeche) AS nutzflaeche_brache, GROUP_CONCAT(fb.nutzflaeche) AS einzelfl_brache,
SUM(fn.nutzflaeche) AS nutzflaeche_nicht_aush, GROUP_CONCAT(fn.nutzflaeche) AS einzelfl_nicht_aush
FROM teilnehmer t
LEFT JOIN anrede a ON (t.anrede_id = a.anrede_id)
LEFT JOIN antragsform af ON (t.antragsform_id = af.antragsform_id)
LEFT JOIN bank b ON (t.bank_id = b.bank_id)
LEFT JOIN flurverzeichnis fe ON (t.teilnehmer_id = fe.teilnehmer_id AND fe.kulturbez = 'E')
LEFT JOIN flurverzeichnis fp ON (t.teilnehmer_id = fp.teilnehmer_id AND fp.kulturbez = 'P')
LEFT JOIN flurverzeichnis fb ON (t.teilnehmer_id = fb.teilnehmer_id AND fb.kulturbez = 'B')
LEFT JOIN flurverzeichnis fn ON (t.teilnehmer_id = fn.teilnehmer_id AND fn.kulturbez = 'N')
WHERE 1 = 1
GROUP BY t.teilnehmer_id
ORDER BY familienname, vorname
を合計が正しい領域を反映するものではありません。例えば。 kulturbez 'E'と5行、kulturbez 'N'と2行の場合、それぞれの 'E'行が2回表示され、それぞれの 'N'行が5回表示されます。すべての行と一致するkulturbezを1回だけ合計するようにSQLをやり直す方法に関する提案はありますか? おかげで、
ギュンター私のコメントで示されているように
、あなたはテーブルを集約する必要があります*前* 'join'を実行します。それがデカルト積を避ける方法です。 –
多くの場合、1:Nの関係が複雑になるので、集計計算はサブクエリで実行する必要があります。 – Uueerdo
これはLEFT JOINが動作する方法です。結果セットに2x5のレコードが必要です。 –