2016-10-04 4 views
-1

Ich habe die folgende Abfrage gefunden und schätze es, wenn mir jemand erklären kann, was das bedeutet.Wählen Sie aus Tabelle1, Tabelle2

+2

Warum machst du es nicht einfach um zu sehen, was es macht? Es wird ein 'kartesianisches Produkt' erzeugt, indem eine' Kreuzverbindung' verwendet wird ... – sgeddes

+0

Danke @sgeddes, jetzt verstehe ich es. Entschuldigung für meine Dummheit. –

Antwort

5

Dies wird CROSS JOIN aber in einer alten Syntax mit , in FROM Klausel.

Es erzeugt ein kartesisches Produkt, so dass die Anzahl der Zeilen in der Ergebnismenge wird durch die Anzahl der Zeilen aus table2 (vorausgesetzt, es gibt keine Einschränkungen in der Klausel WHERE) die Anzahl der Zeilen aus table1 multipliziert. Es verbindet effektiv jede Reihe von table1 mit einer Reihe, die von table2 kommt.

Below Abfrage ist ein äquivalentes aber tut explizite JOIN Operation, die auf getrennte Tabellen gespeicherten zugehörigen Daten des Verbindens constraint Logik der Datenabruf von logisch trennt:

SELECT * 
FROM table1 
CROSS JOIN table2 
+1

Danke für die Erklärung. –

1

Sie erhalten alle Zeilen aus Tabelle1 multipliziert mit allen Zeilen aus Tabelle2 und werden abhängig von den Spalten beider Tabellen angezeigt. Wie @sgeddes darauf hingewiesen hat, ein kartesisches Produkt zu erstellen.

0

Tabelle1 (Sp1, Sp2) mit 4 Aufzeichnungen

Table2 (Col11, Col22, Col33) mit 3 Datensätze

wenn Sie die Abfrage weiter unten verwenden, wird es produzieren NxM Anzahl der Zeilen (Cartesian Join)

select * from table1, table2 

Die Ergebnis- und Spaltensequenz aus beiden Tabellen wäre unten mit 4 x 3 = 12 Records angegeben. Col1, Col2, Col11, Col22, Col33

Verwandte Themen