Utilisation de la syntaxe SELECT 5 dans ADO
Auteur:Eve Cole
Date de mise à jour:2009-05-30 19:54:26
Rejoindre
Les connexions JOIN combinent les enregistrements de champ dans deux tables, dont trois types :
Formule d'opération INNER JOIN : joignez et combinez les enregistrements de champ dans deux tables.
Formule d'opération LEFT JOIN : joint et combine les enregistrements de champ dans deux tables, et inclura tous les enregistrements dans la table de gauche de LEFT JOIN.
Formule d'opération RIGHT JOIN : joint et combine les enregistrements de champ dans deux tables et inclura tous les enregistrements de la table sur le côté droit de RIGHT JOIN.
INNER JOIN définit l'expression d'opération liée à deux tables pour connecter et combiner les enregistrements de champ dans les deux tables.
La syntaxe INNER JOIN est la suivante :
FROM Tableau 1 INNER JOIN Tableau 2 ON Tableau 1. Champ 1 Opérateur de comparaison Tableau 2. Champ 2
Les champs utilisés pour connecter deux tables, tels que [Table 1. Champ 1 = Table 2. Champ 2], doivent avoir le même type de champ, mais les noms de champ ne doivent pas nécessairement être les mêmes.
Par exemple, le type de champ NuméroAuto peut être connecté au type de champ Long, mais le type de champ Single Integer ne peut pas être connecté au type de champ Double Integer.
Les opérateurs de comparaison peuvent être =, <, >, <=, >= ou <>.
Les champs connectés par JOIN ne peuvent pas contenir de types de champs MEMO ou de types d'objets OLE, sinon une erreur se produira.
Dans une expression JOIN, plusieurs clauses ON peuvent être connectées :
SÉLECTIONNER les champs
FROM table 1 INNER JOIN table 2
ON Tableau 1. Champ 1 Tableau des opérateurs de comparaison 2. Champ 1 ET
ON Tableau 1. Champ 2 Tableau des opérateurs de comparaison 2. Champ 2) OU
ON table 1. champ 3 opérateur de comparaison table 2. champ 3)
Les expressions JOIN peuvent être imbriquées :
SÉLECTIONNER les champs
À PARTIR DU TABLEAU 1 JOINTURE INTERNE
(Tableau 2 INNER JOIN [( ]Tableau 3
[INNER JOIN [( ] table x [INNER JOIN ...)]
ON Tableau 3. Champ 3 Tableau des opérateurs de comparaison x Champ x)]
ON Tableau 2. Champ 2 Tableau de l'opérateur de comparaison 3. Champ 3)
ON Tableau 1. Champ 1 Tableau des opérateurs de comparaison 2. Champ 2
Dans un INNER JOIN, un LEFT JOIN ou un RIGHT JOIN imbriqué peuvent être inclus, mais dans un LEFT JOIN ou un RIGHT JOIN, un INNER JOIN imbriqué ne peut pas être inclus.
Regardons un exemple d'utilisation de cette commande SQL dans un programme ASP.
Vous pouvez utiliser Inner Join...On pour combiner les enregistrements dans les deux tables. Par exemple, le programme ASP rs26.asp est le suivant : [Sélectionner le code de vente, le nom du produit, le prix, la quantité des ventes. Inner Join Product On Product. Code = Sales.Code], utilisez Inner Join...On pour définir la formule de calcul liée aux deux tables et combiner les enregistrements dans les deux tables :
<%
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 rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Sélectionnez Sales.Code, Product.Name, Product.Price, Sales.Quantity de SalesInner Rejoignez 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">Nom</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Prix</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Quantité</FONT></TD>
</TR>
<% Faire sans 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
Boucle
rs3.Fermer
%>
</TABLE>
Le programme ASP ci-dessus, rs26.asp, utilise un navigateur côté client pour parcourir les résultats d'exécution et afficher les enregistrements dans les deux tables combinées. Puisqu'il n'y a pas de champs de nom ni de champs de prix dans la table des ventes, [Inner Join Product On Product. Code = Sales.Code] Recherchez les données dans le champ nom et le champ prix de la table produit.
L'exemple ci-dessus utilise la syntaxe de Inner Join :
Sélectionnez Sales.Code, Product.Name, Product.Price, Sales.Quantity dans SalesInner Rejoignez ProductOn Product.Code = Sales.Code
Le résultat est le même que celui-ci en utilisant Where :
Sélectionnez Sales.Code, Product.Name, Product.Price, Sales.Quantity dans Sales, ProductWhere Product.Code = Sales.Code
REJOINDRE À GAUCHE/JOINDRE À DROITE
La connexion INNER JOIN combine les enregistrements de champs associés dans deux tables, ce qui constitue une connexion interne. Vous pouvez également utiliser :
Utilisez l'opération LEFT JOIN : pour créer une jointure externe gauche. En plus d'obtenir les enregistrements de champ associés dans les deux tables, LEFT JOIN inclura également tous les enregistrements de la table de gauche de LEFT JOIN, qu'il existe ou non des enregistrements correspondants dans la table de droite.
Utilisez l’opération RIGHT JOIN : créez une connexion externe droite. En plus d'obtenir les enregistrements de champ associés dans les deux tables, RIGHT JOIN inclura également tous les enregistrements de la table de droite de RIGHT JOIN, qu'il existe ou non des enregistrements correspondants dans la table de gauche.
Par exemple, [Sales LEFT JOIN Products] peut sélectionner tous les enregistrements de ventes. [Vendre des produits RIGHT JOIN] Tous les enregistrements de produits peuvent être sélectionnés.
Par exemple, l'utilisation de Left Join...On permet non seulement d'obtenir les enregistrements de champs associés dans les deux tables, mais inclut également tous les enregistrements de la table de gauche de LEFT JOIN. Le programme ASP rs26.asp est le suivant : [Sélectionner les ventes. code, product.name, product .Price, Sales.Quantity from SalesLeft Join ProductOn Product.Code = Sales.Code], l'utilisation de Left Join inclut tous les enregistrements de la table des ventes sur le côté gauche de LEFT JOIN :
<%
Définir 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"
Définir rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Sélectionnez Sales.Code, Product.Name, Product.Price, Sales.Quantity depuis SalesLeft Rejoignez 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">Nom</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Prix</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Quantité</FONT></TD>
</TR>
<% Faire sans 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
Boucle
rs3.Fermer
%>
</TABLE>
Pour le programme ASP rs26.asp ci-dessus, utilisez le navigateur côté client pour parcourir les résultats d'exécution. L'affichage contient tous les enregistrements dans la table des ventes sur le côté gauche de LEFT JOIN. Puisqu'il n'y a pas de champ de nom ni de champ de prix. la table des ventes, l'enregistrement des ventes avec le numéro de code 4, via [Sales Left Join Product On Product.Code = Sales.Code], les données du champ nom et du champ prix de la table produit sont trouvées. Pour les autres codes, les données. du champ de nom et du champ de prix sont introuvables.
L'utilisation de Right Join...On obtient non seulement les enregistrements de champ associés dans les deux tables, mais inclut également tous les enregistrements de la table de droite de RIGHT JOIN. Par exemple, le programme ASP rs26.asp est le suivant : [Sélectionner Ventes. .Code, Product.Name, Product .Price, Sales.Quantity from Sales Right Join Product On Product.Code = Sales.Code], l'utilisation de Right Join inclut tous les enregistrements de la table de produits sur le côté droit de RIGHT JOIN :
<%
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 rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Sélectionnez Sales.Code, Product.Name, Product.Price, Sales.Quantity de SalesRight Rejoignez 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">Nom</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Prix</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">Quantité</FONT></TD>
</TR>
<% Faire sans 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
Boucle
rs3.Fermer
%>
</TABLE>
Pour le programme ASP rs26.asp ci-dessus, utilisez le navigateur côté client pour parcourir les résultats d'exécution. L'affichage contient tous les enregistrements de la table des produits sur le côté droit de RIGHT JOIN puisqu'il n'y a pas de champ de quantité dans le produit. Dans la table, l'enregistrement du produit avec le numéro de code 4 est transmis [Sales Right Join Product On Product.Code = Sales.Code] Les données dans le champ quantité de la table des ventes sont trouvées. Pour les autres codes, les données dans le champ quantité ne sont pas trouvées. trouvé.
Vous avez compris ?