[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 ?
A voir également:
- [SQL] fonction equivalente à "all in"
- Winget upgrade --all - Guide
- Fonction si et - Guide
- Navigation in private - Guide
- Aux in ✓ - Forum Enceintes / HiFi
- Peut-on brancher un casque sur une prise auxiliaire ? - Forum Casque et écouteurs
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.
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.
coq
Je n'ai pas fait exactement comme toi mais j'ai repris ton idée de comptage et ca marche. Merci !