SQl Abfrage wo ist der Fehler?

fridolin12

Benutzer
Beiträge
13
Fragestellung:
Geben Sie jene Kunden (Nr, Name) aus, die mindestens einen Artikel gekauft haben, aber nie vom Vertreter 'GP' betreut worden sind.

Tabellen:

kunde(nr, name, plz, strasse, gebiet) (View)
artikel(ean, bezeichnung, kategorie, ekpreis) (View)
vertreter(kurzzeichen, name provision) (View)
auftragskopf(nr, kunde, vertreter, lieferdatum) (View)
auftragszeile(nr, posnr, artikel, vkpreis, menge) (View)

Habe nun folgende Abfrage:
Select k1.nr,k1.name
From kunde k1 Left Outer Join auftragskopf ak1 On k1.nr=ak1.kunde
Where ak1.nr Is Not Null and ak1.vertreter!='GP'



Ergebisse dieser Abfrage:
NR NAME
11111 Roller
15882 Schieber
24537 Raser

Der Roller wurde einmal von GP betreut und einmal nicht wie kann ich diesen Fall wegbringen?

Bitte um Hilfe wäre wirklich wirklich wichtig!
 
Werbung:

fridolin12

Benutzer
Beiträge
13
AW: SQl Abfrage wo ist der Fehler?

Ja das ist verständlich leider muss ich die Abfragen morgen früh haben dachte ich bringe es selber hin aber komme einfach nicht mehr weiter!

Wäre meine Rettung

Aber trotzdem danke vielleicht kannst du mir trotzdem helfen

fridolin
 

thomas_w

Datenbank-Guru
Beiträge
104
AW: SQl Abfrage wo ist der Fehler?

eventuell so, wenn kein Tippfehler drin ist...

Code:
SELECT k1.nr,
       k1.name
  FROM kunde k1
  JOIN auftragskopf ak1
    ON k1.nr = ak1.kunde
WHERE  NOT EXISTS ( SELECT COUNT(*) FROM auftragskopf ak2
                     WHERE ak2.kunde = k1.nr
                       AND ak2.vertreter = 'GP' )

Grüße
Thomas
 

fridolin12

Benutzer
Beiträge
13
AW: SQl Abfrage wo ist der Fehler?

Das habe ich auch schon probiert bekomme dann als Resultat kein einziges Tupel obwohl 2 Tupel richtigen wären.

RESULT
Sorry! Your query is not correct. ERROR REPORT
Error: Incorrect number of tuples! Description: 2 tuples are missing in the result of your query. QUERY RESULT
NR NAME

Kann das sein weil Count(*) 0 liefert und das auch eine Lösung ist?

Das ist die richtige Lösung danke vielleicht schaffe ich mit deiner Hilfe die anderen Aufgaben auch noch
SELECT k1.nr,
k1.name
FROM kunde k1
JOIN auftragskopf ak1
ON k1.nr = ak1.kunde
WHERE 0= ( SELECT COUNT(*) FROM auftragskopf ak2
WHERE ak2.kunde = k1.nr
AND ak2.vertreter = 'GP' )




 
Werbung:

thomas_w

Datenbank-Guru
Beiträge
104
AW: SQl Abfrage wo ist der Fehler?

Stimmt, COUNT(*) liefert hier 0. Mein Fehler, korrekt wäre:

Code:
SELECT k1.nr,
       k1.name
  FROM kunde k1
  JOIN auftragskopf ak1
    ON k1.nr = ak1.kunde
WHERE  NOT EXISTS ( SELECT 1 FROM auftragskopf ak2
                     WHERE ak2.kunde = k1.nr
                       AND ak2.vertreter = 'GP' )
Grüße
Thomas
 
Oben