none
Abfrage mit "IN" RRS feed

  • Frage

  • Hallo zusammen,

    ich bastle gerade an einer Abfrage:

    SELECT Nachname Vorname,

    From tblPersonal WHERE KontaktID in(SELECT KontaktID FROM tblKontakte)

    Das klappt soweit wunderbar,

    jetzt sollte aber auch die Möglichkeit bestehen, den Filter auf "alle Kontakte" zu setzen.

    Wie kann ich es anstellen , dass anstelle der Abfrage in "IN" auf alle Datensätze gefiltert wird bzw. nicht gefiltert wird.

    Danke für Tipps und Grüße

    Michael

    Dienstag, 3. August 2021 16:14

Antworten

  • Da kenne ich nur 1 Möglichkeit: die Where-Klausel dann weg lassen;-).
    Dienstag, 3. August 2021 19:20
  • Hallo Michael,

    jetzt sollte aber auch die Möglichkeit bestehen, den Filter auf "alle Kontakte" zu setzen.

    Wenn mit "allen Kontakten" alle Datensätze in der Tabelle tblKontakte zusätzlich zu den bereits abgefragten Ergebnissen gemeint sind, versuch es mit einer rechten äußeren Verknüpfung:

    SELECT p.Nachname, p.Vorname, k.KontaktID <, weitere Spalten aus der tblKontakte-Tabelle>
    From tblPersonal AS p RIGHT OUTER JOIN tblKontakte AS k
    ON p.KontaktID = k.KontaktID


    Wenn nicht, erkläre bitte ausführlicher, was Dein Ziel ist.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 6. August 2021 14:11
    Moderator
  • Hallo Michael,

    mit etwas zusätzlicher Logik geht dies problemlos:

    Declare @AlleKontakte int = 1;
    
    Set @AlleKontakte = ? ;
    
    SELECT Nachname Vorname,
    From tblPersonal 
    WHERE KontaktID in (SELECT KontaktID FROM tblKontakte)
    Or @AlleKontakte = 1;
    Du musst halt die Variable vorher entsprechend initialisieren ( siehe das ? oben).


    Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu

    Mittwoch, 18. August 2021 05:10

Alle Antworten

  • Da kenne ich nur 1 Möglichkeit: die Where-Klausel dann weg lassen;-).
    Dienstag, 3. August 2021 19:20
  • Hallo Michael,

    jetzt sollte aber auch die Möglichkeit bestehen, den Filter auf "alle Kontakte" zu setzen.

    Wenn mit "allen Kontakten" alle Datensätze in der Tabelle tblKontakte zusätzlich zu den bereits abgefragten Ergebnissen gemeint sind, versuch es mit einer rechten äußeren Verknüpfung:

    SELECT p.Nachname, p.Vorname, k.KontaktID <, weitere Spalten aus der tblKontakte-Tabelle>
    From tblPersonal AS p RIGHT OUTER JOIN tblKontakte AS k
    ON p.KontaktID = k.KontaktID


    Wenn nicht, erkläre bitte ausführlicher, was Dein Ziel ist.

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 6. August 2021 14:11
    Moderator
  • Hallo Michael,

    mit etwas zusätzlicher Logik geht dies problemlos:

    Declare @AlleKontakte int = 1;
    
    Set @AlleKontakte = ? ;
    
    SELECT Nachname Vorname,
    From tblPersonal 
    WHERE KontaktID in (SELECT KontaktID FROM tblKontakte)
    Or @AlleKontakte = 1;
    Du musst halt die Variable vorher entsprechend initialisieren ( siehe das ? oben).


    Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu

    Mittwoch, 18. August 2021 05:10