[SQL] fonction equivalente à "all in"

Résolu
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 ?
Configuration: Linux
Firefox 3.0.13

2 réponses

  1. toma_f_1 Messages postés 94 Statut Membre 7
     
    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.
    1
    1. coq
       
      Je n'ai pas fait exactement comme toi mais j'ai repris ton idée de comptage et ca marche. Merci !
      0
  2. CaPiT Messages postés 622 Statut Membre 51
     
    Bonjour.

    Avec IN à la place de "all in", c'est pas bon?
    0