私はこのクエリにかなりこだわっています。まず第一に、私は何を達成したいですか?3 つのテーブル (既に正しい) を内部結合し、日付が当月であるかどうかに応じてデータを除外したいと考えています。日付が当月でない場合、フィールド「bedrag」は入力せず、ゼロに設定する必要があります。テーブルのすべても表示されるはずですが、「bedrag」フィールドは変更しないでください。
日付が現在の月からのものである場合は、「bedrag」に追加し (それを行うためのグループに注意してください)、すべても表示する必要があります。今、私のクエリは、今月のものではないデータがある場合を除いて、すべて正しいことを行います。その後、レコードが失われるか、表示されなくなります。
テーブルのデザイン: http://imgur.com/vhONCq1
クエリ:
SELECT c.id, c.omschrijving, l.maximumBedrag, SUM(IIF(IsNULL(f.bedrag), 0, f.bedrag)) AS bedrag
FROM ((Categorie c LEFT OUTER JOIN
Financien f ON f.categorieId = c.id) LEFT OUTER JOIN
Limiet l ON l.categorieId = c.id)
WHERE (f.inkomstOfUitgave IS NULL) OR
(f.inkomstOfUitgave = 1) AND (format(f.datum, 'yyyy-mm-dd') > format(NOW(), 'yyyy-mm'))
GROUP BY c.id, f.categorieId, c.omschrijving, l.maximumBedrag
注: これは通常の SQL ではなく、Access DB から DAL および BLL レイヤーにデータを取得するために C# で使用されるバリアントです。
クエリでどのメッセージが表示され、どのように問題が発生するかを確認できる例: http://imgur.com/V0N6Wbk
記録が今月のものでない場合、すべてのデータを表示する方法を教えてもらえますか?
ありがとう!