Verwendung der SELECT-Syntax sechs in ADO
Autor:Eve Cole
Aktualisierungszeit:2009-05-30 19:54:23
Unterabfrage
In einen SELECT-, SELECT...INTO-, INSERT...INTO-, DELETE- oder UPDATE-Ausdruck können Sie einen SELECT-Ausdruck einschließen. Dieser SELECT-Ausdruck wird als Unterabfrage bezeichnet.
Sie können Unterabfragen mit drei Syntaxen erstellen:
Ausdruck [ANY |. ALL |. EINIGE] (Unterabfrage)
Ausdruck [NOT] IN (Unterabfrage)
[NOT] EXISTS (Unterabfrage)
Ein SELECT-Ausdruck einer Unterabfrage hat dieselbe Syntax wie ein allgemeiner SELECT-Ausdruck und muss in Klammern eingeschlossen werden.
Sie können Unterabfragen verwenden, um Operatoren in einem SELECT-Ausdruck oder in einer WHERE- oder HAVING-Klausel zu ersetzen.
Die Schlüsselwörter ANY und SOME haben die gleiche Bedeutung und werden verwendet, um die Vergleichsbedingungen aller Datensätze auszuwählen, die mit der Unterabfrage übereinstimmen. Das folgende Beispiel gibt beispielsweise Datensätze zurück, in denen der Stückpreis des Produkts größer ist als jede Menge größer als 100 in der Bestellung:
WÄHLEN * AUS PRODUKTEN
WO Stückpreis > ANY
(Stückpreis AUS Bestellung auswählen
WO Menge > 100)
Mit dem Schlüsselwort ALL werden die Vergleichsbedingungen aller Datensätze ausgewählt, die mit der Unterabfrage übereinstimmen.
Wenn Sie im obigen Beispiel beispielsweise ANY in ALL ändern, werden Datensätze zurückgegeben, in denen der Stückpreis des Produkts höher ist als bei allen Bestellungen mit einer Menge über 100.
Schlüsselwort IN-Prädikat zum Abrufen bestimmter Datensätze, die denselben Wert in der Hauptabfrage und nur in der Unterabfrage enthalten. Das folgende Beispiel gibt alle Produkte zurück, die mit einem Rabatt von 25 Prozent oder mehr verkauft wurden:
Das Schlüsselwort IN wird verwendet, um Datensätze in der Unterabfrage auszuwählen. Das folgende Beispiel gibt beispielsweise Datensätze mit einer Menge > 100 in der Bestellung zurück:
WÄHLEN * AUS PRODUKTEN
WO Produktcode IN
(Produktcode AUS Bestellung auswählen
WO Menge > 100)
Im Gegensatz dazu wird das Schlüsselwort NOT IN verwendet, um Datensätze auszuwählen, die nicht in der Unterabfrage enthalten sind.
Bei einem Wahr/Falsch-Vergleich können Sie das Schlüsselwort EXISTS verwenden, um zu bestimmen, ob die Unterabfrage Datensätze zurückgibt.
Ein ASP-Beispiel für das Schlüsselwort ALL, wie etwa das ASP-Programm rs24.asp, lautet wie folgt: [SELECT name, subject, score From exam Where subject = 'arithmetic' and score >= All (SELECT score From exam Where subject = 'arithmetic ' und name =' Zhang San')] Finden Sie die Rechendatensätze des Rechentests, deren Punktzahl größer oder gleich Zhang San ist:
<%
Setze conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Setze rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = „NAME, Fach, Punktzahl aus der Prüfung auswählen, wobei Fach = ‚Arithmetik‘ und Punktzahl >= Alle (SELECT Punktzahl aus der Prüfung, wobei Fach = ‚Arithmetik‘ und Name = ‚Zhang San‘)“
rs2.Open SqlStr,conn1,1,1
Response.Write „<p>Alle Ergebnisse sind höher als die Arithmetik von Zhang San“
Tun Sie es zwar nicht mit rs2.EOF
Response.Write "<BR>" & rs2("Name") & " " & rs2("Subject") & " Score: " & rs2("Score")
rs2.MoveNext
Schleife
rs2.Schließen
%>
Das obige ASP-Programm rs24.asp verwendet einen Browser auf der Clientseite, um die Ausführungsergebnisse zu durchsuchen und die arithmetischen Datensätze des arithmetischen Tests anzuzeigen, deren Punktzahl größer oder gleich Zhang San ist.
Beliebig
Das Schlüsselwort ANY wird verwendet, um die Vergleichsbedingungen eines beliebigen Datensatzes auszuwählen, der mit der Unterabfrage übereinstimmt. Das ASP-Programm rs24.asp lautet beispielsweise wie folgt: Beliebig (Punktzahl aus der Prüfung auswählen, wobei Betreff='Arithmetik' und Name='Zhang San')] Suchen Sie die Datensätze, deren Bruch größer oder gleich einem beliebigen arithmetischen Bruch von Zhang San ist:
<%
Setze conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Setze rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = „NAME, Fach, Punktzahl aus der Prüfung auswählen, wobei Fach = ‚Arithmetik‘ und Punktzahl >= Beliebig (SELECT Punktzahl aus der Prüfung, wobei Fach = ‚Arithmetik‘ und Name = ‚Zhang San‘)“
rs2.Open SqlStr,conn1,1,1
Response.Write „<p>Jeder Bruch höher als die Arithmetik von Zhang San“
Tun Sie es zwar nicht mit rs2.EOF
Response.Write "<BR>" & rs2("Name") & " " & rs2("Subject") & " Score: " & rs2("Score")
rs2.MoveNext
Schleife
rs2.Close%>
Das obige ASP-Programm rs24.asp verwendet einen Browser auf der Clientseite, um die Ausführungsergebnisse zu durchsuchen und die Datensätze anzuzeigen, deren Punktzahl größer oder gleich einem beliebigen arithmetischen Bruchteil von Zhang San ist.
Manche
Die Schlüsselwörter SOME und ANY haben die gleiche Bedeutung und werden verwendet, um die Vergleichsbedingungen jedes Datensatzes auszuwählen, der mit der Unterabfrage übereinstimmt. Das ASP-Programm rs24.asp lautet beispielsweise wie folgt: [SELECT Name, Subject, Score From Exam Where Subject = 'Arithmetik' und Punktzahl >= Einige (SELECT Score From Exam Where Subject='Arithmetic' and Name='Zhang San')] Finden Sie die Datensätze, deren Punktzahlen größer oder gleich einem beliebigen arithmetischen Bruchteil von Zhang San sind:
<%
Setze conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Setze rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = „SELECT Name, Fach, Punktzahl aus Prüfung, wobei Fach = ‚Arithmetik‘ und Punktzahl >= Some (SELECT Punktzahl aus Prüfung, wobei Fach = ‚Arithmetik‘ und Name = ‚Zhang San‘)“
rs2.Open SqlStr,conn1,1,1
Response.Write „<p>Einige Brüche höher als die Arithmetik von Zhang San“
Tun Sie es zwar nicht mit rs2.EOF
Response.Write "<BR>" & rs2("Name") & " " & rs2("Subject") & " Score: " & rs2("Score")
rs2.MoveNext
Schleife
rs2.Schließen
%>
Das obige ASP-Programm rs24.asp verwendet einen Browser auf der Clientseite, um die Ausführungsergebnisse zu durchsuchen und die Datensätze anzuzeigen, deren Punktzahl größer oder gleich einem beliebigen arithmetischen Bruchteil von Zhang San ist.
Wählen Sie...In
Select...Into erstellt eine generierte Tabelle basierend auf den Abfrageergebnissen.
Die Syntax lautet wie folgt:
SELECT Feld 1[,Feld 2[, ...]] INTO neue Tabelle[IN externe Tabelle]
VON Tabelle
Der Name der neuen Tabelle darf nicht mit dem Namen der vorhandenen Tabelle identisch sein, da sonst ein Fehler auftritt.
Die durch Select...Into erstellte neue Tabelle hat denselben Felddatentyp und dieselbe Feldgröße wie die abgefragte Tabelle.
Schauen wir uns ein Beispiel für die Verwendung dieses SQL-Befehls in einem ASP-Programm an.
Das ASP-Programm rs9.asp lautet beispielsweise wie folgt: [Select * Into Computer From Product Where Type = 'Computer'] generiert eine neue [Computer]-Tabelle für alle [Type]-Datensätze in der [Product]-Tabelle als [Computer ]:
<%
Setze conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
sql = „Wählen Sie * In „Computer aus Produkt“ aus, wobei Kategorie = „Computer“ ist.
Setze a = conn1.Execute(sql)
Setze rs3 = Server.CreateObject("ADODB.Recordset")
sql = „Wähle * vom Computer aus“
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("codename")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("name")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("price")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("quantity")%></TD>
</TR>
<%
rs3.MoveNext
Schleife
rs3.Schließen
%>
</TABLE>
Das obige ASP-Programm rs9.asp verwendet einen Browser auf dem Client, um die Ausführungsergebnisse zu durchsuchen und die Datensätze der neuen [Computer]-Tabelle anzuzeigen.