Verwendung der SELECT-Syntax 4 in ADO
Autor:Eve Cole
Aktualisierungszeit:2009-05-30 19:54:28
HABEN
HAVING wird in SELECT-Ausdrücken verwendet, um Datensätze zu filtern, die von GROUP BY gezählt wurden. Nachdem GROUP BY Datensätze gezählt hat, filtert HAVING Datensätze, die den Bedingungen in der HAVING-Klausel entsprechen.
Die Syntax lautet wie folgt:
Feldliste AUSWÄHLEN
VON Tabelle
WO Auswahlkriterien
GROUP BY-Gruppenfeldliste
[MIT Gruppenkriterien]
.groupcriteria gibt die statistischen Datensätze an, die bestimmen, welche gefiltert werden sollen.
HAVING ähnelt WHERE und wird verwendet, um zu entscheiden, welche Datensätze ausgewählt werden sollen. Wenn GROUP BY zum Zählen von Datensätzen verwendet wird, bestimmt HAVING die Datensätze, die angezeigt werden sollen, zum Beispiel:
Produktnamen AUSWÄHLEN
VON Produkten
GRUPPE NACH Kategorie
MIT Stückpreis > 1000
Eine HAVING-Klausel kann bis zu 40 Operationsausdrücke enthalten, und die Operationsausdrücke werden durch logische Operatoren wie AND oder OR verbunden.
Schauen wir uns ein Beispiel für die Verwendung dieses SQL-Befehls in einem ASP-Programm an.
Wir können die HAVING-Klausel verwenden, um die Datensätze zu bestimmen, die angezeigt werden sollen. Das ASP-Programm rs23.asp lautet beispielsweise wie folgt: [SELECT Name, Subject, Avg (Score) As Average From Exam Group By Name, Subject Using Avg ( Score) >=60], verwenden Sie „Having Avg(score) >=60“ Suchen Sie nach Datensätzen mit einer durchschnittlichen Punktzahl größer oder gleich 60 Punkten:
<%
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, Proband, Durchschn. (Punktzahl) als Durchschnitt aus der Prüfungsgruppe nach Name, Proband mit Durchschn. (Punktzahl) >=60“
rs2.Open SqlStr,conn1,1,1
Response.Write „<p>Having Avg(score) >=60“
Tun Sie es zwar nicht mit rs2.EOF
Response.Write "<BR>" & rs2("Name") & " " & rs2("Betreff") & " Average: " & rs2("Average")
rs2.MoveNext
Schleife
rs2.Schließen
%>
Das obige ASP-Programm rs23.asp verwendet einen Browser auf dem Client, um die Ausführungsergebnisse zu durchsuchen und die Datensätze anzuzeigen, deren durchschnittliche Punktzahl größer oder gleich 60 Punkten ist.
Wir können auch die HAVING-Klausel verwenden, um doppelte Datensätze zu finden. Das ASP-Programm rs23.asp lautet beispielsweise wie folgt: [SELECT Code From Product Group By Code Using Count (Code) > 1], verwenden Sie Using Count (Code) > 1 So finden Sie doppelte Codedatensätze:
<%
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 Code aus Produktgruppe nach Code mit Count(code) > 1“
rs2.Open SqlStr,conn1,1,1
Response.Write „<p>Duplikate mit Anzahl(Code) > 1 finden“
Tun Sie es zwar nicht mit rs2.EOF
Response.Write „<BR>“ & rs2(“codename“)
rs2.MoveNext
Schleife
rs2.Schließen
%>
Verwenden Sie für das obige ASP-Programm rs23.asp einen Browser auf der Clientseite, um die Ausführungsergebnisse zu durchsuchen und Datensätze mit doppelten Codenamen anzuzeigen.
Union
Union kann die Ergebnisse mehrerer Abfragesätze kombinieren.
Die Syntax lautet wie folgt:
Abfrage 1 UNION [ALL] Abfrage 2 [UNION [ALL] Abfrage 3 [ ... ]]
Die Abfrage ist ein SELECT-Ausdruck.
Wenn Sie eine UNION-Operation verwenden, werden keine doppelten Datensätze zurückgegeben. Wenn Sie alle Datensätze zurückgeben möchten, können Sie ALL nach UNION hinzufügen, um die Abfrage schneller auszuführen.
Alle Abfragen in einer UNION-Operation müssen die gleiche Anzahl von Feldern haben. Die Feldgrößen können unterschiedlich sein, und auch die Felddatentypen können unterschiedlich sein.
Aliase können nur im ersten SELECT-Ausdruck verwendet werden und werden in anderen SELECT-Ausdrücken weggelassen.
Sie können die GROUP BY- oder HAVING-Klausel in jedem SELECT-Ausdruck verwenden, um die Ergebnisse der Abfrage zu zählen.
Sie können die ORDER BY-Klausel im letzten SELECT-Ausdruck verwenden, um die Reihenfolge anzugeben, in der die Abfrageergebnisse sortiert werden.
Schauen wir uns ein Beispiel für die Verwendung dieses SQL-Befehls in einem ASP-Programm an.
Union kann verwendet werden, um die Ergebnisse zweier Abfragesätze zusammenzuführen. Das ASP-Programm rs25.asp lautet beispielsweise wie folgt: ) Union (SELECT Name, Fach, Punktzahl) Aus der Prüfung Wo subject='arithmetic' und name='Zhang San')], verwenden Sie Union, um die Ergebnisse von zwei Sätzen von SELECT-Abfragen zusammenzuführen, wobei eine Gruppe die Datensätze der arithmetischen Punktzahl abfragt von Li Si, und die andere besteht darin, die arithmetischen Ergebnisaufzeichnungen von Zhang San abzufragen:
<%
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, subject, scoreFrom exam Where subject='arithmetic' and name='Li Si') Union (SELECT name, subject, scoreFrom exam Where subject='arithmetic' and name='Zhang San') "
rs2.Open SqlStr,conn1,1,1
Response.Write „<p>Union“
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 rs25.asp verwendet einen Browser auf dem Client, um die Ausführungsergebnisse zu durchsuchen und die arithmetischen Bruchdatensätze von John Doe und John Doe anzuzeigen.