J'aimerais avoir un peu d'aide pour la mise au point d'une requête SQL
(sur MySQL) pour sortir les membres d'une association, en particulier
frères et soeurs.
Je précise que je fais rarement du SQl si évolué, que je n'ai jamais eu
de formation SGBD, et qu'il peut donc y avoir pas mal de bêtises dans ce
que j'ai déjà fait.
J'ai actuellement (simplifié) :
1 table "membres" :
------------------
id_Membre : int primary
mb_Nom : varchar
mb_AdrLieu : Int : lien vers table Lieux
mb_Pere : Int : lien vers id table Membres
mb_Mere : Int : lien vers id table Membres
Requete pour la liste des membres associée à leur Père, Mère, Ville :
-------------------------------------------------------
SELECT
mb.id_membre AS mbId, mb.mb_AdrLieu,
mb.mb_Nom AS mbNom, mb.mb_Pere, mb.mb_Mere,
mbPere.id_membre AS peId, mbPere.mb_Nom AS peNom,
mbMere.id_membre AS meId, mbMere.mb_Nom AS meNom,
lxAdr.id_lieu AS adId, lxAdr.lx_Ville AS adVille
FROM gaut_membres AS mb
LEFT OUTER JOIN membres AS mbPere
ON (mb.mb_Pere = mbPere.id_membre)
LEFT OUTER JOIN membres AS mbMere
ON (mb.mb_Mere = mbMere.id_membre)
LEFT OUTER JOIN lieux AS lxAdr
ON (mb.mb_AdrLieu = lxAdr.id_lieu)
WHERE 1
ORDER BY mb.mb_Nom ASC
MAINTENANT, je voudrais lister *avec chaque membre*, ses frères et
soeurs membres, donc de père ou mère commun.
Je pense donc qu'il y aura UN enregistrement supplémentaire par frère ou
soeur au-delà du premier (je trierai ensuite pour l'affichage).
J'ai modifié la requête pour qu'elle me donne la liste des frères et
soeur, en rajoutant
LEFT JOIN membres AS mbFrere
ON (mb.mb_Pere = mbFrere.mb_Pere)
mais elle n'inclut pas ceux qui n'ont aucun frère ou soeur.
******************************
Puis avoir la bonne formule ??
MERCI !
--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.
Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
P'tit Marcel
Stéphane Santon écrivit news::
J'aimerais avoir un peu d'aide pour la mise au point d'une requête SQL (sur MySQL) pour sortir les membres d'une association, en particulier frères et soeurs.
------------------------------------------------------- SELECT mb.id_membre AS mbId, mb.mb_AdrLieu, mb.mb_Nom AS mbNom, mb.mb_Pere, mb.mb_Mere, mbPere.id_membre AS peId, mbPere.mb_Nom AS peNom, mbMere.id_membre AS meId, mbMere.mb_Nom AS meNom, lxAdr.id_lieu AS adId, lxAdr.lx_Ville AS adVille FROM gaut_membres AS mb
mb.mb_Pere et mbPere.id_membre sont identiques par construction donc tu peux éliminer cette dernière colonne idem pour mb.mb_Mere et mbMere.id_membre idem pour mb.mb_AdrLieu et lxAdr.id_lieu
WHERE 1
superflu : tu peux virer cette ligne
MAINTENANT, je voudrais lister *avec chaque membre*, ses frères et soeurs membres, donc de père ou mère commun. Je pense donc qu'il y aura UN enregistrement supplémentaire par frère ou soeur au-delà du premier (je trierai ensuite pour l'affichage).
c'est pas vraiment un tri, plutôt un traitement de la rupture.
LEFT JOIN membres AS mbFrere ON (mb.mb_Pere = mbFrere.mb_Pere)
et les demi-frères ? ;-)
mais elle n'inclut pas ceux qui n'ont aucun frère ou soeur.
si, et ça marchera même avec une jointure fermée : au minimum tu vas récupérer dans la fratrie le membre lui-même
Puis avoir la bonne formule ??
tu as dû ajouter une condition erronée dans le WHERE. publie donc ta requête que tu affirme ne pas fonctionner.
J'aimerais avoir un peu d'aide pour la mise au point d'une requête SQL
(sur MySQL) pour sortir les membres d'une association, en particulier
frères et soeurs.
-------------------------------------------------------
SELECT
mb.id_membre AS mbId, mb.mb_AdrLieu,
mb.mb_Nom AS mbNom, mb.mb_Pere, mb.mb_Mere,
mbPere.id_membre AS peId, mbPere.mb_Nom AS peNom,
mbMere.id_membre AS meId, mbMere.mb_Nom AS meNom,
lxAdr.id_lieu AS adId, lxAdr.lx_Ville AS adVille
FROM gaut_membres AS mb
mb.mb_Pere et mbPere.id_membre sont identiques par construction donc tu
peux éliminer cette dernière colonne
idem pour mb.mb_Mere et mbMere.id_membre
idem pour mb.mb_AdrLieu et lxAdr.id_lieu
WHERE 1
superflu : tu peux virer cette ligne
MAINTENANT, je voudrais lister *avec chaque membre*, ses frères et
soeurs membres, donc de père ou mère commun.
Je pense donc qu'il y aura UN enregistrement supplémentaire par frère ou
soeur au-delà du premier (je trierai ensuite pour l'affichage).
c'est pas vraiment un tri, plutôt un traitement de la rupture.
LEFT JOIN membres AS mbFrere
ON (mb.mb_Pere = mbFrere.mb_Pere)
et les demi-frères ?
;-)
mais elle n'inclut pas ceux qui n'ont aucun frère ou soeur.
si, et ça marchera même avec une jointure fermée : au minimum tu vas
récupérer dans la fratrie le membre lui-même
Puis avoir la bonne formule ??
tu as dû ajouter une condition erronée dans le WHERE.
publie donc ta requête que tu affirme ne pas fonctionner.
J'aimerais avoir un peu d'aide pour la mise au point d'une requête SQL (sur MySQL) pour sortir les membres d'une association, en particulier frères et soeurs.
------------------------------------------------------- SELECT mb.id_membre AS mbId, mb.mb_AdrLieu, mb.mb_Nom AS mbNom, mb.mb_Pere, mb.mb_Mere, mbPere.id_membre AS peId, mbPere.mb_Nom AS peNom, mbMere.id_membre AS meId, mbMere.mb_Nom AS meNom, lxAdr.id_lieu AS adId, lxAdr.lx_Ville AS adVille FROM gaut_membres AS mb
mb.mb_Pere et mbPere.id_membre sont identiques par construction donc tu peux éliminer cette dernière colonne idem pour mb.mb_Mere et mbMere.id_membre idem pour mb.mb_AdrLieu et lxAdr.id_lieu
WHERE 1
superflu : tu peux virer cette ligne
MAINTENANT, je voudrais lister *avec chaque membre*, ses frères et soeurs membres, donc de père ou mère commun. Je pense donc qu'il y aura UN enregistrement supplémentaire par frère ou soeur au-delà du premier (je trierai ensuite pour l'affichage).
c'est pas vraiment un tri, plutôt un traitement de la rupture.
LEFT JOIN membres AS mbFrere ON (mb.mb_Pere = mbFrere.mb_Pere)
et les demi-frères ? ;-)
mais elle n'inclut pas ceux qui n'ont aucun frère ou soeur.
si, et ça marchera même avec une jointure fermée : au minimum tu vas récupérer dans la fratrie le membre lui-même
Puis avoir la bonne formule ??
tu as dû ajouter une condition erronée dans le WHERE. publie donc ta requête que tu affirme ne pas fonctionner.
eça -- P'tit Marcel
Stéphane Santon
Bonjour,
P'tit Marcel a écrit :
> J'aimerais avoir un peu d'aide pour la mise au point d'une requête SQL > (sur MySQL) pour sortir les membres d'une association, en particulier > frères et soeurs.
superflu : tu peux virer cette ligne
J'avais simplifié, mais gardé la structure.
c'est pas vraiment un tri, plutôt un traitement de la rupture.
Je ne connais pas le vocabulaire de sgbd.
si, et ça marchera même avec une jointure fermée : au minimum tu vas récupérer dans la fratrie le membre lui-même tu as dû ajouter une condition erronée dans le WHERE. publie donc ta requête que tu affirme ne pas fonctionner.
Tu as raison, ça a l'air de marcher. Je ne sais pas ce que j'avais fait.
Tout est décrit là : http://gautreau.team-santonum.com/sql.php utilisateur : sql mot de passe : aide
Il y a surement optimisations à faire en masse...
-- ** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.
Cordialement, Stéphane *** http://www.team-santonum.com Loisirs, nature, arts, technologie : accueil en Charente-Maritime
Bonjour,
P'tit Marcel a écrit :
> J'aimerais avoir un peu d'aide pour la mise au point d'une requête SQL
> (sur MySQL) pour sortir les membres d'une association, en particulier
> frères et soeurs.
superflu : tu peux virer cette ligne
J'avais simplifié, mais gardé la structure.
c'est pas vraiment un tri, plutôt un traitement de la rupture.
Je ne connais pas le vocabulaire de sgbd.
si, et ça marchera même avec une jointure fermée : au minimum tu vas
récupérer dans la fratrie le membre lui-même
tu as dû ajouter une condition erronée dans le WHERE.
publie donc ta requête que tu affirme ne pas fonctionner.
Tu as raison, ça a l'air de marcher.
Je ne sais pas ce que j'avais fait.
Tout est décrit là :
http://gautreau.team-santonum.com/sql.php
utilisateur : sql
mot de passe : aide
Il y a surement optimisations à faire en masse...
--
** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.
Cordialement, Stéphane *** http://www.team-santonum.com
Loisirs, nature, arts, technologie : accueil en Charente-Maritime
> J'aimerais avoir un peu d'aide pour la mise au point d'une requête SQL > (sur MySQL) pour sortir les membres d'une association, en particulier > frères et soeurs.
superflu : tu peux virer cette ligne
J'avais simplifié, mais gardé la structure.
c'est pas vraiment un tri, plutôt un traitement de la rupture.
Je ne connais pas le vocabulaire de sgbd.
si, et ça marchera même avec une jointure fermée : au minimum tu vas récupérer dans la fratrie le membre lui-même tu as dû ajouter une condition erronée dans le WHERE. publie donc ta requête que tu affirme ne pas fonctionner.
Tu as raison, ça a l'air de marcher. Je ne sais pas ce que j'avais fait.
Tout est décrit là : http://gautreau.team-santonum.com/sql.php utilisateur : sql mot de passe : aide
Il y a surement optimisations à faire en masse...
-- ** Anti-Spam : ajouter [usenet] dans l'objet pour ne pas être rejeté.
Cordialement, Stéphane *** http://www.team-santonum.com Loisirs, nature, arts, technologie : accueil en Charente-Maritime