Utilisation de la syntaxe SELECT quatre dans ADO
Auteur:Eve Cole
Date de mise à jour:2009-05-30 19:54:28
AYANT
HAVING est utilisé dans les expressions SELECT pour filtrer les enregistrements qui ont été comptés par GROUP BY. Une fois que GROUP BY compte les enregistrements, HAVING filtrera les enregistrements qui correspondent aux conditions de la clause HAVING.
La syntaxe est la suivante :
SELECT liste de champs
DE la table
OÙ critères de sélection
GROUP BY groupechampliste
[AVANT des critères de groupe]
.groupcriteria indique les enregistrements statistiques qui déterminent lesquels doivent être filtrés.
HAVING est similaire à WHERE et est utilisé pour décider quels enregistrements sélectionner. Lorsque GROUP BY est utilisé pour compter les enregistrements, HAVING déterminera les enregistrements à afficher, par exemple :
CHOISIR le nom du produit
DE produits
GROUPER PAR Catégorie
AYANT un prix unitaire > 1000
Une clause HAVING peut contenir jusqu'à 40 expressions opérationnelles, et les expressions opérationnelles seront reliées par des opérateurs logiques tels que AND ou OR.
Regardons un exemple d'utilisation de cette commande SQL dans un programme ASP.
Nous pouvons utiliser la clause HAVING pour déterminer les enregistrements qui doivent être affichés. Par exemple, le programme ASP rs23.asp est le suivant : [SELECT Nom, Sujet, Moyenne (Score) comme moyenne du groupe d'examen par nom, Sujet ayant une moyenne ( Score) >=60], utilisez Avoir Avg(score) >=60 Recherchez les enregistrements avec un score moyen supérieur ou égal à 60 points :
<%
Définir conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Définir rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT Nom, Sujet, Moyenne (Score) comme moyenne du groupe d'examen par nom, Sujet ayant une Moyenne (Score) >=60"
rs2.Open SqlStr,conn1,1,1
Réponse.Écrivez "<p>Ayant une moyenne (score) >=60"
Faire sans rs2.EOF
Réponse.Écrire "<BR>" & rs2("Nom") & " " & rs2("Sujet") & " Moyenne : " & rs2("Moyenne")
rs2.MoveNext
Boucle
rs2.Fermer
%>
Le programme ASP ci-dessus rs23.asp utilise un navigateur sur le client pour parcourir les résultats d'exécution et afficher les enregistrements dont le score moyen est supérieur ou égal à 60 points.
Nous pouvons également utiliser la clause HAVING pour rechercher des enregistrements en double. Par exemple, le programme ASP rs23.asp est le suivant : [SELECT Code From Product Group By Code Ayant Count (Code) > 1], utilisez Ayant Count (Code) > 1. pour trouver les codes en double
<%
Définir conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Définir rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SÉLECTIONNER le code du groupe de produits par code ayant un nombre (code) > 1"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Trouver les doublons ayant un nombre (code) > 1"
Faire sans rs2.EOF
Réponse.Écrivez "<BR>" & rs2("codename")
rs2.MoveNext
Boucle
rs2.Fermer
%>
Pour le programme ASP rs23.asp ci-dessus, utilisez un navigateur côté client pour parcourir les résultats d'exécution et afficher les enregistrements avec des noms de code en double.
Union
Union peut combiner les résultats de plusieurs ensembles de requêtes.
La syntaxe est la suivante :
Requête 1 UNION [ALL] Requête 2 [UNION [ALL] Requête 3 [ ... ]]
La requête est une expression SELECT.
Lorsque vous utilisez une opération UNION, les enregistrements en double ne seront pas renvoyés ; si vous souhaitez renvoyer tous les enregistrements, vous pouvez ajouter ALL après que UNION L'ajout de ALL exécutera la requête plus rapidement.
Toutes les requêtes d'une opération UNION doivent avoir le même nombre de champs. La taille des champs peut être différente, tout comme les types de données de champ.
Les alias ne peuvent être utilisés que dans la première expression SELECT et sont omis dans les autres expressions SELECT.
Vous pouvez utiliser la clause GROUP BY ou HAVING dans chaque expression SELECT pour compter les résultats de la requête.
Vous pouvez utiliser la clause ORDER BY dans la dernière expression SELECT pour spécifier l'ordre dans lequel les résultats de la requête sont triés.
Regardons un exemple d'utilisation de cette commande SQL dans un programme ASP.
Union peut être utilisée pour fusionner les résultats de deux ensembles de requêtes. Par exemple, le programme ASP rs25.asp est le suivant : [(SELECT name, subject, score From exam Where subject='arithmetic' and name='Li Si'. ) Union (SELECT nom, sujet, score) À partir de l'examen Où sujet='arithmétique' et nom='Zhang San')], utilisez Union pour fusionner les résultats de deux ensembles de requêtes SELECT, un groupe doit interroger les enregistrements de score arithmétique de Li Si, et l'autre consiste à interroger les enregistrements de scores arithmétiques de Zhang San :
<%
Définir conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Définir rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "(SELECT nom, sujet, scoreFrom examen Où sujet='arithmétique' et nom='Li Si') Union (SELECT nom, sujet, scoreFrom examen Où sujet='arithmétique' et nom='Zhang San') "
rs2.Open SqlStr,conn1,1,1
Réponse.Écrivez "<p>Union"
Faire sans rs2.EOF
Réponse.Écrivez "<BR>" & rs2("Nom") & " " & rs2("Sujet") & " Score : " & rs2("Score")
rs2.MoveNext
Boucle
rs2.Fermer
%>
Le programme ASP ci-dessus, rs25.asp, utilise un navigateur sur le client pour parcourir les résultats d'exécution et afficher les enregistrements de fractions arithmétiques de John Doe et John Doe.