Bonjour,
Pour les amateurs de retournement de cerveau, j'ai donc une requête qui me pose une sérieuse colle ...
Ci joint un schéma, pour mieux comprendre mes futures explications :
Point d'entrée de la requête : un id sur la table M
Une relation de N..N existe entre M et T (donc M => 1..N <=> MT <=> N..1 <= T)
Une relation de N..N existe entre F et T (donc T => 1..N <=> FT <=> N..1 <= F)
Sortie : je veux tous les F ayant au moins tous les T contenus dans le M selectionné
l'idée serait donc la suivante (mais bien entendu, cette requête est absolument fausse) :
où XXX est le point d'entrée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 SELECT F.id_F FROM F WHERE ALL ( SELECT FT.id_T FROM FT WHERE FT.id_F = F.id_F ) IN ( SELECT MT.id_T FROM MT WHERE MT.id_M=XXX )
Si quelqu'un veut bien m'aider et comprend le problème, je l'en remercie par avance
PS : je suis sous oracle, si ça peut aider (ou pas :p)
Partager