napperman
Goto Top

Gleichzeitig Zutreffende Kriterien in ein Access-Abfrage

Moin zusammen!

Ich stehe gerade auf dem Schlauch:
Ich möchte eine Abfrage auf eine Tabelle mit 3 Spalten realisieren.
Die Tabelle enthält folgende Spalten

ID, Gruppe, Adressnr


Es kann nun also vorkommen, dass ein Adresse A1 mehrfach vorkommt, weil sie zu Gruppe G1 und G2 gehört.

Ich möchte nun eine Abfrage realisieren, bei der nur die Adressen angezeigt werden, die z.B. in G1 UND G2 sind.
NICHT ODER

Aber irgendwie sehe ich den Wald vor lauter Bäumen nciht.
Die Kriterien sollen aus einem Kombinations oder Listenfeld kommen, das ist nicht das Problem. Ich verstehe einfach nicht, wie ich das mit dem UND
bei den Kriterien bauen soll.

Vielleicht kann mir jemand nen virtuellen Schlag auf den Hinterkopf geben face-wink

Gruß,

Napperman

Content-Key: 207558

Url: https://administrator.de/contentid/207558

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: nxclass
nxclass 05.06.2013 um 16:04:21 Uhr
Goto Top
bei der nur die Adressen angezeigt werden, die z.B. in G1 UND G2 sind. NICHT ODER
.. eine Möglichkeit:
SELECT
  AdressNr,
  COUNT( ID ) AS 'anzahl'  
WHERE Gruppe IN ('G1', 'G2')  
GROUP BY Adressnr
HAVING anzahl = 2
.. noch eine:
SELECT t1.Adressnr, t1.ID, t2.ID
FROM Tabelle t1
JOIN Tabelle t2 on ( t1.Adressnr = t2.Adressnr )
WHERE
  t1.Gruppe = 'G1' AND  
  t2.Gruppe = 'G2  
Mitglied: Biber
Biber 05.06.2013 aktualisiert um 19:47:09 Uhr
Goto Top
@nxclass

Nur als Ergänzung.
- die erste Abfrage würde möglicherweise ein vorzeigbareres Ergebnis liefern, wenn das Schlüsselwort "FROM" gefolgt von einem Tabellennamen erwähnt werden würde.

- die zweite Abfrage könnte ein bisschen länger dauern, wenn mehr als ein paar Datensätze in der Tabelle sind und kein Index auf der Adressnr liegt oder schlicht und einfach Addressfelder NULL oder leere Strings sind.

Wenn schon diese Strategie, dann würde ich als Tabelle t1 die wählen, die voraussichtlich die geringere Anzahl Datensätze mit Gruppenzugehörigkeit "G1" hat und dann:
SELECT t1.Adressnr, t1.ID, t2.ID
FROM Tabelle (select Addressnr, ID from Tabelle 
           where Gruppe='G1') t1  
JOIN (select Addressnr, ID from Tabelle 
           where Gruppe='G2' )  
    t2 on ( t1.Adressnr = t2.Adressnr )

Grüe
Biber
Mitglied: napperman
napperman 11.06.2013 um 16:14:09 Uhr
Goto Top
Vielen Dank!

Die Schläge auf den Hinterkopf waren hilfreich face-wink

Gruß,

Napperman