selectioner les elements a qui sont associés à tous les elem
Posté : 13 avr. 2008, 16:18
Bonjour,
j'ai un petit problème pour ecrire une requete SQL fonctionnant sous Access.
pour simplifier, je vais reduire ma base à un équivalent simple :
disons que j'ai :
- des arrets de bus dans une ville avec chacun un numéro.
- plusieurs bus ayant eux aussi chacun un numéro
chaque bus a son propre trajet desservant certains arrets.
j'ai donc 3 tables :
- table arrets comportant le numero de l'arret num_arret
- table bus comportant le numero du bus num_bus
- table dessert comportant le numero d'un bus et celui d'un arret
Ce que je cherche à faire c'est, à partir d'une liste de numeros d'arret recueilli par une sous requete, obtenir les bus qui desservent TOUS ces arrets.
j'ai pensé à utiliser un count pour comparer le nombre des arrets recueillis avec celui des arrets de chaque bus contenu dans la liste des arrets recueillis.
c'est à dire :
- compter en sous requete le nombre des arrets de la liste
- compter pour chaque bus le nombre d'enregistrement
- renvoyer les numéro des bus ou les sommes sont egales.
Mais je ne vois pas comment traduire cela en sql pour effectuer une requete qui fonctionne sous Access.
Un idée pour m'aider?
j'ai un petit problème pour ecrire une requete SQL fonctionnant sous Access.
pour simplifier, je vais reduire ma base à un équivalent simple :
disons que j'ai :
- des arrets de bus dans une ville avec chacun un numéro.
- plusieurs bus ayant eux aussi chacun un numéro
chaque bus a son propre trajet desservant certains arrets.
j'ai donc 3 tables :
- table arrets comportant le numero de l'arret num_arret
- table bus comportant le numero du bus num_bus
- table dessert comportant le numero d'un bus et celui d'un arret
Code : Tout sélectionner
CREATE TABLE arrets
num_arret int PRIMARY KEY
CREATE TABLE bus
num_bus int PRIMARY KEY
CREATE TABLE dessert
num_arret int
num_bus int
PRIMARY KEY (num_arret,num_bus)
j'ai pensé à utiliser un count pour comparer le nombre des arrets recueillis avec celui des arrets de chaque bus contenu dans la liste des arrets recueillis.
c'est à dire :
- compter en sous requete le nombre des arrets de la liste
Code : Tout sélectionner
SELECT COUNT(*)
FROM arrets
WHERE num_arret IN (liste_arrets)Code : Tout sélectionner
SELECT COUNT(*)
FROM dessert
WHERE num_arret IN(liste_arrets)
GROUP BY num_busCode : Tout sélectionner
???Un idée pour m'aider?