[SQL] fonction equivalente à "all in"
Résolu
coq
-
coq -
coq -
Bonjour,
Je cherche une fonction qui permette de vérifier qu'une série d'éléments font TOUS partie d'une selection.
Exemple :
Numéro des etudiants possédant un livre sur chaque sujet existant.
etudiant : numero,
livre : numero, sujet
select distinct(etudiant.numero)
from etudiant,livre
where etudiant.numero=livre.numero AND livre.sujet "all in" (
select distinct(sujet)
from livre);
J'ai mis "all in" pour l'endroit posant probleme mais bien sur ca ne marche pas... Avez-vous une idée ?
Je cherche une fonction qui permette de vérifier qu'une série d'éléments font TOUS partie d'une selection.
Exemple :
Numéro des etudiants possédant un livre sur chaque sujet existant.
etudiant : numero,
livre : numero, sujet
select distinct(etudiant.numero)
from etudiant,livre
where etudiant.numero=livre.numero AND livre.sujet "all in" (
select distinct(sujet)
from livre);
J'ai mis "all in" pour l'endroit posant probleme mais bien sur ca ne marche pas... Avez-vous une idée ?
Configuration: Linux Firefox 3.0.13
2 réponses
-
bonjour,
le in ne suffit pas car il regarde juste si le sujet est dans un ensemble pas si les deux ensembles sont égaux.
j'ai testé ton cas, et je fait l'astuce suivante :
recuperer tous les etudiants ou le nombre des différents sujets de livres empruntés correspond au nombre total de sujet de livre
dans mon exemple ca donne ca : j'espere que ca peux t'aider.
select et.id_etud from etudiants et, emprunt em, livre l, typeL tl
where em.id_etud = et.id_etud
and em.id_livre = l.id_livre
and l.id_typeL = tl.id_typeL
group by et.id_etud
having count(distinct tl.id_typeL) =
(
select count(distinct tl0.id_typeL)
from typeL tl0
)
bon par contre pas sur que ce soit super optimisé niveau perfs. -