Verwendung der SELECT-Syntax 5 in ADO
Autor:Eve Cole
Aktualisierungszeit:2009-05-30 19:54:26
Verbinden
JOIN-Verbindungen kombinieren Felddatensätze in zwei Tabellen, darunter drei Typen:
INNER JOIN-Operationsformel: Felddatensätze in zwei Tabellen verbinden und kombinieren.
LEFT JOIN-Operationsformel: Verbindet und kombiniert Felddatensätze in zwei Tabellen und schließt alle Datensätze in der linken Tabelle von LEFT JOIN ein.
RIGHT JOIN-Operationsformel: Verbindet und kombiniert Felddatensätze in zwei Tabellen und schließt alle Datensätze in der Tabelle auf der rechten Seite von RIGHT JOIN ein.
INNER JOIN legt den Operationsausdruck für zwei Tabellen fest, um die Felddatensätze in den beiden Tabellen zu verbinden und zu kombinieren.
Die INNER JOIN-Syntax lautet wie folgt:
FROM Tabelle 1 INNER JOIN Tabelle 2 ON Tabelle 1. Feld 1 Vergleichsoperator Tabelle 2. Feld 2
Die Felder, die zum Verbinden zweier Tabellen verwendet werden, z. B. [Tabelle 1. Feld 1 = Tabelle 2. Feld 2], müssen denselben Feldtyp haben, die Feldnamen müssen jedoch nicht identisch sein.
Beispielsweise kann der Feldtyp „AutoWert“ mit dem Feldtyp „Lang“ verbunden werden, der Feldtyp „Einzelne Ganzzahl“ kann jedoch nicht mit dem Feldtyp „Doppelte Ganzzahl“ verbunden werden.
Vergleichsoperatoren können =, <, >, <=, >= oder <> sein.
Durch JOIN verbundene Felder dürfen keine MEMO-Feldtypen oder OLE-Objekttypen enthalten, da sonst ein Fehler auftritt.
In einem JOIN-Ausdruck können mehrere ON-Klauseln verbunden werden:
Felder auswählen
FROM Tabelle 1 INNER JOIN Tabelle 2
ON Tabelle 1. Feld 1 Vergleichsoperatortabelle 2. Feld 1 AND
ON Tabelle 1. Feld 2 Vergleichsoperatortabelle 2. Feld 2) ODER
ON Tabelle 1. Feld 3 Vergleichsoperator Tabelle 2. Feld 3)
JOIN-Ausdrücke können verschachtelt werden:
Felder auswählen
AUS TABELLE 1 INNER JOIN
(Tabelle 2 INNER JOIN [( ]Tabelle 3
[INNER JOIN [( ] Tabelle x [INNER JOIN ...)]
ON Tabelle 3. Feld 3 Vergleichsoperatortabelle x. Feld x)]
ON Tabelle 2. Feld 2 Vergleichsoperatortabelle 3. Feld 3)
ON Tabelle 1. Feld 1 Vergleichsoperatortabelle 2. Feld 2
In einem INNER JOIN kann ein verschachtelter LEFT JOIN oder RIGHT JOIN enthalten sein, aber in einem LEFT JOIN oder RIGHT JOIN kann kein verschachtelter INNER JOIN enthalten sein.
Schauen wir uns ein Beispiel für die Verwendung dieses SQL-Befehls in einem ASP-Programm an.
Sie können Inner Join...On verwenden, um die Datensätze in den beiden Tabellen zu kombinieren. Das ASP-Programm rs26.asp lautet beispielsweise wie folgt: Inner Join Product On Product. Code = Sales.Code], verwenden Sie Inner Join...On, um die Berechnungsformel für die beiden Tabellen festzulegen und die Datensätze in den beiden Tabellen zu kombinieren:
<%
Setze conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Setze rs3 = Server.CreateObject("ADODB.Recordset")
sql = „Wählen Sie Sales.Code, Product.Name, Product.Price, Sales.Quantity aus SalesInner Join ProductOn Product.Code = Sales.Code“
rs3.Open sql,conn1,1,1,1
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Code</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Name</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Preis</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Menge</FONT></TD>
</TR>
<% Do while not rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(3)%></TD>
</TR>
<%
rs3.MoveNext
Schleife
rs3.Schließen
%>
</TABLE>
Das obige ASP-Programm rs26.asp verwendet einen Browser auf der Clientseite, um die Ausführungsergebnisse zu durchsuchen und die Datensätze in den beiden kombinierten Tabellen anzuzeigen. Da es in der Verkaufstabelle keine Namensfelder und Preisfelder gibt, [Inner Join Product On Product. Code = Sales.Code] Suchen Sie die Daten im Namensfeld und im Preisfeld der Produkttabelle.
Das obige Beispiel verwendet die Syntax von Inner Join:
Wählen Sie Sales.Code, Product.Name, Product.Price, Sales.Quantity aus SalesInner Join ProductOn Product.Code = Sales.Code
Das Ergebnis ist dasselbe wie das folgende unter Verwendung von Where:
Wählen Sie Sales.Code, Product.Name, Product.Price, Sales.Quantity aus Sales, ProductWhere Product.Code = Sales.Code
LINKS VERBINDEN/RECHTS VERBINDEN
Die INNER JOIN-Verbindung kombiniert verwandte Felddatensätze in zwei Tabellen. Dies ist eine interne Verbindung. Sie können auch Folgendes verwenden:
Verwenden Sie die LEFT JOIN-Operation:, um einen linken äußeren Join zu erstellen. Zusätzlich zum Abrufen der zugehörigen Felddatensätze in den beiden Tabellen schließt LEFT JOIN auch alle Datensätze in der linken Tabelle von LEFT JOIN ein, unabhängig davon, ob in der rechten Tabelle übereinstimmende Datensätze vorhanden sind.
Verwenden Sie die RIGHT JOIN-Operation: Erstellen Sie eine rechte äußere Verbindung. Zusätzlich zum Abrufen der zugehörigen Felddatensätze in den beiden Tabellen schließt RIGHT JOIN auch alle Datensätze in der rechten Tabelle von RIGHT JOIN ein, unabhängig davon, ob in der linken Tabelle übereinstimmende Datensätze vorhanden sind.
Beispielsweise können mit [Sales LEFT JOIN Products] alle Verkaufsdatensätze ausgewählt werden. [RIGHT JOIN-Produkte verkaufen] Alle Produktdatensätze können ausgewählt werden.
Wenn Sie beispielsweise Left Join...On verwenden, werden nicht nur die zugehörigen Felddatensätze in den beiden Tabellen abgerufen, sondern auch alle Datensätze in der linken Tabelle von LEFT JOIN einbezogen. Das ASP-Programm rs26.asp lautet wie folgt: [Verkäufe auswählen. code, product.name, product .Price, Sales.Quantity from SalesLeft Join ProductOn Product.Code = Sales.Code], die Verwendung von Left Join schließt alle Datensätze in der Verkaufstabelle auf der linken Seite von LEFT JOIN ein:
<%
Setze conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"
Setze rs3 = Server.CreateObject("ADODB.Recordset")
sql = „Wählen Sie Sales.Code, Product.Name, Product.Price, Sales.Quantity aus SalesLeft Join ProductOn Product.Code = Sales.Code“
rs3.Open sql,conn1,1,1,1
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Code</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Name</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Preis</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Menge</FONT></TD>
</TR>
<% Do while not rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(3)%></TD>
<%
rs3.MoveNext
Schleife
rs3.Schließen
%>
</TABLE>
Verwenden Sie für das obige ASP-Programm rs26.asp den Browser auf der Clientseite, um die Ausführungsergebnisse zu durchsuchen. Die Anzeige enthält alle Datensätze in der Verkaufstabelle auf der linken Seite von LEFT JOIN, da kein Namensfeld und kein Preisfeld vorhanden sind Die Verkaufstabelle, der Verkaufsdatensatz mit der Codenummer 4, über [Sales Left Join Product On Product.Code = Sales.Code], die Daten des Namensfelds und des Preisfelds der Produkttabelle. Für andere Codes werden die Daten gefunden des Namensfeldes und des Preisfeldes werden nicht gefunden.
Mit Right Join...On werden nicht nur die zugehörigen Felddatensätze in den beiden Tabellen abgerufen, sondern auch alle Datensätze in der rechten Tabelle des RIGHT JOIN einbezogen. Das ASP-Programm rs26.asp lautet beispielsweise wie folgt: [Select Sales .Code, Product.Name, Product .Price, Sales.Quantity from Sales Right Join Product On Product.Code = Sales.Code], die Verwendung von Right Join schließt alle Datensätze in der Produkttabelle auf der rechten Seite von RIGHT JOIN ein:
<%
Setze conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Setze rs3 = Server.CreateObject("ADODB.Recordset")
sql = „Wählen Sie Sales.Code, Product.Name, Product.Price, Sales.Quantity aus SalesRight Join ProductOn Product.Code = Sales.Code“
rs3.Open sql,conn1,1,1,1
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Code</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Name</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Preis</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Menge</FONT></TD>
</TR>
<% Do while not rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(0)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(1)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(2)%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3(3)%></TD>
<%
rs3.MoveNext
Schleife
rs3.Schließen
%>
</TABLE>
Verwenden Sie für das obige ASP-Programm rs26.asp den Browser auf der Clientseite, um die Ausführungsergebnisse zu durchsuchen. Die Anzeige enthält alle Datensätze in der Produkttabelle auf der rechten Seite des RIGHT JOIN, da das Produkt kein Mengenfeld enthält Tabelle wird der Produktdatensatz mit der Codenummer 4 übergeben [ Sales Right Join Product On Product.Code = Sales.Code] Die Daten im Mengenfeld der Verkaufstabelle werden gefunden. Bei anderen Codes werden die Daten im Mengenfeld nicht gefunden gefunden.
Hast du es herausgefunden?