Rechercher : dans
Par :

Requete SQL entre 2 tables Many to Many

Dernière réponse le 6 mai 2009 à 15:44:55 Macmanaman, le 6 mai 2009 à 14:55:40 
 Signaler ce message aux modérateurs

Bonjour,
J'ai une question de SQL que je n'arrive pas à résoudre.
Voici un exemple.

J'ai une classe Parent avec un nom, un prénom, et une collection "enfants". La classe enfant mettons qu'il y a
juste un prénom.

Les deux classes sont liés par un lien "many to many". (1..n en français donc).

Voici le type de requete que je voudrais exécuter : "donne moi toutes les personnes qui ont des enfants nommés Jean et Marie". Attention Jean ET Marie. Donc les personnes doivent avoir au moins deux enfants : un Jean et une Marie.
Logiquement ça peut donc retourner plusieurs personnes.

Voilà j'ai simplifé mon application est bien plus complexe mais si j'arrive à le faire avec des personnes et des
enfants, je pourrai adapter ! J'utilise hibernate si y'en a qui connaissent. Mais je recherche la requete SQL,
j'adapterai ensuite.

Merci beaucoup pour votre aide !!

1

Jres, le 6 mai 2009 à 15:02:53

Bonjour,
Vous pouvez utiliser une requete du style :

Select p.* 
from parent p, enfant e1, enfant e2 
where p.nom = e1.nom
and p.nom = e2.nom
and e1.prenom='Jean'
and e2.prenom='Marie';

Cordialement,
Jres

Répondre à Jres

2

Macmanaman, le 6 mai 2009 à 15:35:12

Malheureusement les parents et les enfants ne peuvent pas etre reliés par le nom de famille.
Ainsi un enfant Jean pourra appartenir à plusieurs parents différents.
Bon dans la réalité c'est pas bien réalisable mais c'est juste un exemple ...

Auriez vous une autre idée ?

Merci par avance.

Répondre à Macmanaman

3

 Jres, le 6 mai 2009 à 15:44:55

Vous avez forcement un lien entre la table parent et la table enfant. J'ai utilisé "Nom" a titre informatif mais le principe de la requete reste valable :
La table parent doit être reliée deux fois à la table enfant.
A vous de faire le lien qui va bien.
Cordialement,
Jres

Répondre à Jres
Collection CommentÇaMarche.net