double jointure "sur un même champ" - SQL/NoSQL - Programmation
Marsh Posté le 19-07-2004 à 03:14:20
Ben suffit de renommer les tables, qqch du genre:
|
Cela dit, je comprends pas bien la requête. Pq des LEFT OUTER JOIN ? id_membre et id_demandeur devraient être des FK de alliance_exclusion, non ?
Marsh Posté le 19-07-2004 à 04:07:02
Merci beaucoup !!
Raah le pire dans ton ça c'est que j'avais déjà vu quelque chose semblable dans un bouquin.
Je n'ai pas très bien compris ta question...
FK=Foreign Key ça c'est bon.
Mais où est le probleme ?
(je suis pas un pro en SQL donc si tu pouvais être un peu plus explicite)
Marsh Posté le 19-07-2004 à 06:13:53
Ben oui, le LEFT OUTER JOIN indique que tu veux inclure les enregistrements de "alliance_exculsion", même ceux pour lesquels id_membre ne se retrouve pas dans la table "membre".
Mais cela ne devrait pas se produire. En faisant de id_membre et de id_demandeur des Foreign Key sur membre.id, tu introduis une (deux en fait) contrainte dans la base de donnée qui oblige ces champs à avoir une correspondance dans la table membre. Par exemple, ça empêche d'ajouter un enregistrement dans alliance_exclusion qui référence un membre.id qui n'existe pas, ou d'effacer un membre sans effacer également tous les enregistrements qui lui font référence dans alliance_exclusion. C'est l'intégrité référentielle, la base du modèle relationnel.
Marsh Posté le 19-07-2004 à 00:49:10
Salut,
J'ai un petit probleme MySQL.
J'aimerais recuperer deux pseudos de deux enregistrements d'une table membres à l'aide d'une jointure, seulement je ne sais pas comment distinguer un pseudo de l'autre.
Je m'explique.
j'ai une table alliance_exclusion:
id id_alliance id_membre id_demandeur[...]
J'aimerais recuperer les pseudos de id_membre et id_demandeur qui sont contenu dans une table membres.
Pour recuperer le pseudo de id_membre je fais actuellement ceci:
SELECT alliance_exclusion.*, membres.pseudo FROM alliance_exclusion
LEFT OUTER JOIN membres ON membres.id=alliance_exclusion.id_membre
WHERE id_alliance=$nom->id AND membres.id IS NOT NULL
Et je pensais à quelque chose comme ca pour recuperer le pseudo de id_demandeur:
SELECT alliance_exclusion.*, membres.pseudo FROM alliance_exclusion
LEFT OUTER JOIN membres ON membres.id=alliance_exclusion.id_membre
LEFT OUTER JOIN membres ON membres.id=alliance_exclusion.id_demandeur
WHERE id_alliance=$nom->id AND membres.id IS NOT NULL
Seulement, j'ai deux fois membres.pseudo maintenant.
Cette requete n'est évidemment pas effectuable.
Merci d'avance.