Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Miesler am April 08, 2013, 09:47:04

Titel: Selektion auf Altkunden
Beitrag von: Miesler am April 08, 2013, 09:47:04
Grundlage ist eine ganz einfache Datenbank: eine Tabelle mit Kundenstammdaten, die mit einer weiteren Tabelle mit Bestellungen; verknüpft 1:n.

Ich möchte nun alle Kunden selektieren, die 2011 oder früher bestellt haben, aber 2012 und '13 nicht mehr. Wie ist eine solche Selektion möglich?

Wenn ich auf ein Bestelldatum vor dem 31.12.2011 filtiere, kann ich mir ja nicht automatisch sicher sein, dass diese Kunden nicht auch Bestellungen in den beiden Jahren danach getätigt haben. Also muss ein weiteres Ausschlusskriterium hinzu. Wie und welches?
Titel: Re: Selektion auf Altkunden
Beitrag von: database am April 08, 2013, 12:43:42
Hallo,

ganz einfache Datenbank aber eine nicht ganz so einfache Lösung.
Um jetzt hier keinen Roman zu verfassen habe ich ein kleines Beispiel erstellt, aus dem du ersehen kannst, wie die Zusammenhänge funktionieren.

HTH

[Anhang gelöscht durch Administrator]
Titel: Re: Selektion auf Altkunden
Beitrag von: ebs17 am April 09, 2013, 11:31:36
Der folgende Ansatz beinhaltet auch die Nutzung eines möglicherweise vorhandenen Index auf Bestelldatum:
PARAMETERS
    [:paramJahr] Long
;
SELECT
    K.*,
    Q.MaxDatum
FROM
    tblKunden AS K
        INNER JOIN
            (
                SELECT
                    B.KundenID_F,
                    Max(B.Bestelldatum) AS MaxDatum
                FROM
                    tblBestellungen AS B
                GROUP BY
                    B.KundenID_F
                HAVING
                    Max(B.Bestelldatum) < DateSerial([:paramJahr] + 1, 1, 1)
            ) AS Q
            ON K.KundenID = Q.KundenID_F
;


MfGA
ebs