|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2009 Messages : 18 ![]() |
Bonjour,
je suis en train de concevoir une interface utilisant une base de données mysql. Je possède trois tables. Une table molécule, groupe et une table d'association groupe_molecule. Une molecule peut appartenir à un groupe et un groupe peut posséder 1 ou plusieurs molécules. Structure : Molecule (id_molecule, nom_molecule) groupe (id_groupe,nom_groupe) groupe_molecule (id_groupe,id_molecule) Mon problème : j'ai un groupe groupe_test contenant x molécule(s) Voila j'aimerais savoir s'il existe une requête qui permet de savoir s'il existe déjà un tel groupe contenant les mêmes molecules que groupe_test. Merci d'avance.
|
|
|
00
|
|
|
#2 | ||
|
Invité régulier
![]() Inscription : mai 2009 Messages : 18 ![]() |
Code :
En sachant que le groupe 14 est le groupe que je cherche. |
||
|
|
00
|
|
|
#3 | |||||
![]() ![]() |
Quelles sont les molécules du groupe test ?
Code :
Citation:
1) Toutes les molécules de groupe test et seulement celles-là ? 2) Au moins toutes les molécules de groupe test ? 3) Au moins une des molécules de groupe test ? Je vais supposer que c'est le 1. On cherche donc un groupe dont les molécules font partie de celles de groupe test et dont le nombre de molécules est le même que celui de groupe test. Essaie cette requête : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||||
|
20
|
|
|
#4 |
|
Invité régulier
![]() Inscription : mai 2009 Messages : 18 ![]() |
Merci pour ta réponse rapide.
Effectivement c'est bien le cas 1 que je traite. Et je te remercie cette requête fonctionne à merveille Par contre, j'aimerais bien une p'tite explication de la requête, car j'ai un peu de mal avec le LEFT OUTER JOIN. En gros si j'comprends bien, tmp récupère toutes les molécules de groupe_test? |
|
|
00
|
|
|
#5 | ||
![]() ![]() |
Citation:
WHERE limite ces lignes à celles qui ne concernent pas groupe test. Citation:
On compare ensuite le nombre de molécules de groupe test avec le nombre de molécules des autres groupes sélectionnés et on ne conserve que ceux qui ont exactement les mêmes molécules que groupe test. Imaginons la table groupe_molecule suivante dans laquelle groupe test porte l'identifiant 1 : id_groupe / id_molecule 1 / 1 1 / 2 2 / 1 2 / 2 2 / 3 3 / 1 3 / 2 Il y a deux molécules (1 et 2) dans le groupe test. La jointure va donner ceci : id_groupe / id_molecule / id_molecule de groupe test 1 / 1 / 1 1 / 2 / 2 2 / 1 / 1 2 / 2 / 2 2 / 3 / NULL 3 / 1 / 1 3 / 2 / 2 La restriction (WHERE) excluant groupe test va réduire le résultat à ceci : id_groupe / id_molecule / id_molecule de groupe test 2 / 1 / 1 2 / 2 / 2 2 / 3 / NULL 3 / 1 / 1 3 / 2 / 2 Le groupage par groupe et le comptage vont donner ceci : id_groupe / nombre de molecules 2 / 3 3 / 2 Comme on impose que le nombre de molécules soit celui du groupe test, il ne reste que le groupe 3.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
10
|
|
|
#6 |
|
Invité régulier
![]() Inscription : mai 2009 Messages : 18 ![]() |
Merci beaucoup.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com