Wenn ich diese Abfrage, geben SieWarum gibt SQL zu viele Ergebnisse zurück?
SELECT OrderDetails.OrderDetailID, Customers.CustomerName
FROM OrderDetails, Customers
NATURAL JOIN Products
NATURAL JOIN Customers
WHERE SupplierID = 5;
1001 Datensätze zurückgegeben.
Wenn ich geben Sie diese Abfrage,
SELECT OrderDetailID
FROM OrderDetails
NATURAL JOIN Products
WHERE SupplierID = 5;
11 Datensätze
zurückWie zu erwarten gibt es 91 Datensätze in der Customers-Tabelle und 11 Ergebnisse sind in der zweiten Abfrage zurückgegeben und 91 * 11 = 1001. Ich weiß jedoch nicht, wie ich das beheben soll, und um zu verhindern, dass bei der ersten Abfrage doppelte Ergebnisse zurückgegeben werden.
Schema des angehängt: http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
ich wegbleiben würde aus natürlichen beitritt, sie sparen Sie eine kleine Menge für keinen wirklichen Nutzen der Eingabe und ein Unvorhersehbarkeit auf lange Sicht (z. B. später, nachdem das Projekt gewachsen ist, werden "standardisierte" Zeitstempel zu Tabellen hinzugefügt; jetzt gibt Ihr zuvor funktionierender NATURAL JOIN nur Ergebnisse mit identischen Zeitstempeln zurück). – Uueerdo
^^ Ja, bitte posten Sie die Tabellenstrukturen, damit wir eine genaue Antwort liefern können, ohne zu raten. Das Problem liegt jedoch an der Verwendung von 'FROM OrderDetails, Customers', wo Sie aufgrund der Kommasyntax ein kartesisches Produkt mit einem impliziten inneren Join erstellt haben. –
Der Link, den Sie enthalten, zeigt das Schema nicht tatsächlich an. Bitte bearbeiten Sie die Frage, um die Anweisungen zum CREATE TABLE direkt hier hinzuzufügen. –