Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Lightfood am Dezember 21, 2020, 10:17:59

Titel: IN Operator mit "Wenn-Dann" kombinieren
Beitrag von: Lightfood am Dezember 21, 2020, 10:17:59
Hallo Zusammen!

Ich habe eine Frage zum IN Operator, den ich via Kriterien in einer Abfrage verwende. So sieht das SQL-Statement aus:

SELECT tblProdukte.Nr
FROM tblProdukte
WHERE tblProdukte.Nr In (1,2);

Ich würde diesen Filter gerne insofern erweitern, als dass er für den Fall, dass es keine Produkte mit den Produktnummern 1 und 2 gibt, die Produkte mit den Nummern 3 und 4 angezeigt werden. Es geht also irgendwie in die Richtung "Wenn-Dann", wenn ich es richtig verstehe. Nur weiß ich nicht, wie ich das in der Access-Abfrage als Kriterium schreiben müsste.

Könnte mir vielleicht jemand dabei helfen und mir sagen, wie ich eine solche Anweisung in das Kriterien-Feld meiner Access-Abfrage schreiben müsste (wenn das überhaupt geht)?

Herzlichen Dank im Voraus!

L.
Titel: Re: IN Operator mit "Wenn-Dann" kombinieren
Beitrag von: DF6GL am Dezember 21, 2020, 11:58:46
Hallo,

bevor solche Wenn/Dann-Konstruktionen angewendet werden (was in den meisten Fällen auf falschen Tabellenaufbau hinweist), erkläre bitte zunächst den tieferen Grund der Vorgehensweise und den Sinn dieser "Magic-Number"s.

Zeige zudem einen Screenshot des Beziehungsfensters mit allen beteiligten Tabellen und deren kompletten Feldern.
Titel: Re: IN Operator mit "Wenn-Dann" kombinieren
Beitrag von: ebs17 am Dezember 21, 2020, 12:14:27
Zitatin das Kriterien-Feld meiner Access-Abfrage schreiben müsste
Das bekommt man nicht zusammen. Muss man auch nicht, wenn man sich zuerst um eine einfache Verarbeitungslogik bemüht statt eine bestimmte durchdrücken zu wollen.
Ansatz:
SELECT TOP 1 Nr
FROM tblProdukte
WHERE Nr In (1, 2, 3, 4)
ORDER BY Nr
Titel: Re: IN Operator mit "Wenn-Dann" kombinieren
Beitrag von: PhilS am Dezember 21, 2020, 13:52:01
Zitat von: Lightfood am Dezember 21, 2020, 10:17:59Ich würde diesen Filter gerne insofern erweitern, als dass er für den Fall, dass es keine Produkte mit den Produktnummern 1 und 2 gibt, die Produkte mit den Nummern 3 und 4 angezeigt werden.


SELECT tblProdukte.Nr
FROM tblProdukte
WHERE tblProdukte.Nr In (1,2)
 OR (tblProdukte.Nr In (3,4)
     AND NOT EXISTS (SELECT 'x'
                    FROM tblProdukte
                    WHERE tblProdukte.Nr In (1,2)
    )
;