Requête UNION
Comment regrouper le contenu de 2 tables (ou plus) pour l’afficher sous forme d’une seule liste ?
Le problème
Imaginons que vous avez une table de tblClients
avec un champ Raison sociale
. Vous avez également une table tblFournisseurs
qui comporte un champ équivalent (il peut s’appeler Raison sociale
, ou autrement, mais contient en principe le même genre d’informations). Et vous souhaitez afficher une liste combinée des clients et des fournisseurs.
La solution : une requête UNION
- Créez une nouvelle requête graphique.
- Cliquez sur l’icône Affichage (en haut à gauche de votre écran), et choisissez l’option SQL.
- En mode SQL, tapez une requête SQL qui extrait des données des 2 tables en utilisant la clause
UNION
. Ce qui donne :
1 2 3 4 5 |
SELECT [Raison sociale] FROM [tblClients] UNION SELECT [Raison sociale] FROM [tblFournisseurs] |
Variante
Par défaut, seuls les lignes différentes seront affichées. Ca veut dire que, si un client et un fournisseur ont la même raison sociale, une seule ligne de résultat apparaît pour les deux. Si vous souhaitez afficher toutes les lignes, avec les doublons, remplacez UNION
par UNION ALL
. Ce qui donne :
1 2 3 4 5 |
SELECT [Raison sociale] FROM [tblClients] UNION ALL SELECT [Raison sociale] FROM [tblFournisseurs] |
Salut Mr hervé je sollicite votre aide à résoudre un problème dans le code ci-après :
Private Sub Commande24_Click()
Dim rqt As String
Dim msg As String
Dim numF As String
‘Conditions de mise à jour
numF = Me.[N°F_Achat]
‘Message de confirmation
msg = MsgBox(« Voulez vous valider Cette facture ? », vbQuestion + vbYesNo, « Nouveau produit »)
‘ analyse de la réponse et éxécution de la requete si la réponse est Oui
If msg = 6 Then
DoCmd.RunSQL (« UPDATE Achats SET validée = Yes WHERE [N°F_Achat] = » + numF)
Else
Exit Sub
End If
End Sub
le problème existe au niveau de type de la valeur du champ de la clause Where : numF = Me.[N°F_Achat] qui revoit la valeur suivante : « FA.15.07/00001 » qui ne n’est pas compatyble avec le champ N°F_Achat de la table qui est de type texte. merci d’avance.
Si [N°F_Achat] et numF sont de type Texte, il faut écrire :
HILALI_LAHCEN > Tu veux « empiler » les lignes des 2 tables (les unes sous les autres), ou les juxtaposer (les données de
T_Entrée
à gauche deT_Sortie
) ?Dans le premier cas, il s’agit bien d’une requête
UNION
comme dans l’article plus haut. Dans le 2ème cas, il faut créer une requête en sélectionnant les 2 tables, puis en les joignant à la souris sur le champ de date.bonjour,
j’ai deux tables nomées T_entrée(Date_etrée;Produit;Qté_prdt) et T_Sortie(Date_sortie;Produit;Qté_prdt), je voudrai créer requete qui permet d’afficher toutes les champs avec un champ commun au niveau des dates.
Okay c’est bon sa marche je vous remercie de votre réponse précise et concise, le site est trés clair aussi, bravo!
Je vois sur la capture que tu as activé l’option SQL Direct. C’est elle qui provoque un appel ODBC, et donc la recherche d’une source de données ODBC. « SQL Direct » ne veut pas dire « taper directement une requête SQL », mais « exécuter une instruction SQL en direct sur une source ODBC ».
Ce que tu dois plutôt faire :
Ensuite, utilise l’icône Affichage pour basculer entre les modes.
Ouala !
Je n’arrive pas a exécuter une requete en mode sql sur access 2007 professionnel, quand je veux l’exécuter on me demande de
sélectionner les sources de données, que dois je configurer, je mets un screen pour que ce soit plus clair.
http://img258.imageshack.us/my.php?…
si quelqu’un pourrait me debloquer ce serait vraiment sympa!