msSQL Anfrage -Nur Kd ,wo keine gekennzeichnte Ap anzeigen

mischanj

Neuer Benutzer
Beiträge
4
Hallo Liebe Forumgemeinde,

ich benötige mal wieder eure Hilfe...
Es gibt eine SQL Abfrage, die eigentlich einfach sein sollte...

Zwei Tabellen eine "Ansprechpartner" (KD.id,AP.id,AP.Name) und andere "Ansprechpartner_Kennzeichen" (AP.ID,AP.KZ).Einem Kd.id können mehrere Ap.Id gehören.

Ich brauche ein Select, wo alle KD.Id angezeigt werden bei denen entweder AP.KZ <>1 oder Ap.id gar nicht in Tabelle "Ansprechpartner_Kennzeichen" vorhanden ist.Beide Varianten sollen dann gleiche Ergebnisse bringen,da in der Tabelle "Ansprechpartner_Kennzeichen" nur mit 1 gekennzeichnete Ap.Id eingetragen werden.

Vielen Dank im Voraus.
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.579
Beide Varianten dürfen eben nicht das selbe Ergebniss liefern da die Bedingung AP.KZ ungleich 1 voraus setzt, das eine AP.KZ vorhanden ist.

Code:
SELECT    KD.id
FROM    Ansprechpartner
WHERE    AP.ID IN (    SELECT    AP.ID
                    FROM    Ansprechpartner_Kennzeichen
                    WHERE    AK.KZ != 1 )
OR        AP.ID NOT IN (    SELECT    AP.ID
                        FROM    Ansprechpartner_Kennzeichen )
 

mischanj

Neuer Benutzer
Beiträge
4
Danke.Aber dein Vorschlag ist leider Falsch. Ich habe wahrscheinlich schlecht erklärt.
Also noch mal. Ich brauche alle Kunden(KD.ID) von Tabelle "Ansprechpartner ,wo keinen von Ansprechpartnern (AP.ID) in der Tabelle "Ansprechpartner_Kennzeichen" vorhanden ist.

Danke noch mal.
 

ukulele

Datenbank-Guru
Beiträge
4.579
Das wäre dann der 2te Teil der Abfrage:
Code:
SELECT    KD.id
FROM    Ansprechpartner
WHERE    AP.ID NOT IN (    SELECT    AP.ID
                        FROM    Ansprechpartner_Kennzeichen )
 

mischanj

Neuer Benutzer
Beiträge
4
Habe ich schon ausprobiert geht nicht.Falsche Ergebnisse.Es werden Kunden angezeigt(mehrmals,das kann man aber mit einem distinct lösen ),wo irgendein AP in der Tabelle "Ansprechpartner_Kennzeichen" nicht vorhanden ist.Und das sind fast alle.
 

ukulele

Datenbank-Guru
Beiträge
4.579
Probier mal:
Code:
SELECT    KD.id
FROM    Ansprechpartner
WHERE    AP.ID IS NOT NULL
AND        AP.ID NOT IN (    SELECT    AP.ID
                        FROM    Ansprechpartner_Kennzeichen
                        AND        AP.ID IS NOT NULL )
 
Werbung:

mischanj

Neuer Benutzer
Beiträge
4
Danke.Habe die Lösung gefunden
Code:
SELECT KDID
FROM  Ansprechpartner
WHERE  KDID NOT In (SELECT KDID
                    FROM  Ansprechpartner AS A
                          INNER JOIN Ansprechpartner_Kennzeichen AS AKZ
                          ON A.ID = AKZ.ID)
 
Oben