inden Sie die Seiten der Lieferanten, die jedes Teil liefe

3 Tabellen: Lieferanten (sid, sname, address), Teile (pid, pname, color), Katalog (sid, pid, cost)

ie Antwort, um alle Lieferanten zu finden, die jedes Teil liefern, lautet:

SELECT  C.sid
  FROM  Catalog C
  WHERE NOT EXISTS (
     SELECT  P.pid
       FROM  Parts P
       WHERE NOT EXISTS (
         SELECT  C1.sid
           FROM  Catalog C1
           WHERE C1.sid = C.sid
             AND C1.pid = P.pid
         )
     )

Kann mir jemand diese Antwort erklären? Ich bin nur ein bisschen verloren!

Ich habe gehört, dass es erklärt wurde: "Finden Sie Lieferanten, bei denen es keinen Teil gibt, den sie nicht verkaufen", aber ich habe Mühe zu sehen, wie

SELECT  C1.sid
           FROM  Catalog C1
           WHERE C1.sid = C.sid
             AND C1.pid = P.pid
         )

Erreicht das.

Also wenn ich ein @ ha

Catalog Table

James | Hamme

James | Ambos

James | Schlüsse

Henry | Hamme

Leroy | Ambos

Part Table

Hamme

Ambos

Schlüsse

Was wird dann nach der innersten Klausel genau zurückgegeben?

Ist e

James | Hamme

James | Ambos

James | Schlüsse

Henry | Hamme

Leroy | Ambos

und dann NICHT EXISTEN macht es

James | -

Henry | Amboss, Schraubenschlüssel

Leroy | Hammer, Schraubenschlüssel?

Wie subtrahiert die Teiletabelle dann diese Werte? Es tut mir leid, wenn diese Fragen nicht klar sind. Ich bin noch neu in SQL.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage