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
Patrick Mevzek
Le Sat, 26 Apr 2008 19:49:27 +0200, Y a personne a écrit:
J'essaye en vain d'afficher en une seule requête (My)SQL (nom, prenom) les 3 membres liés au membre 1.
La difficulté est que 1(ou les autres) peuvent se retrouver dans lia_fk_membres1 ou lia_fk_membres2.
Il y a plusieurs façons de faire, par exemple :
SELECT * FROM Membres WHERE mem_id IN ( SELECT lia_fk_membres1 FROM Liaisons WHERE lia_fk_membres2=1 UNION SELECT lia_fk_membres2 FROM Liaisons WHERE lia_fk_membres1=1 );
On peut aussi faire des jointures avant ou après l'union. On peut remplacer l'union par un WHERE avec un OR et un CASE dans la projection.
-- Patrick Mevzek . . . . . . . . . . . . . . Dot and Co <http://www.dotandco.net/> <http://www.dotandco.com/>
Le Sat, 26 Apr 2008 19:49:27 +0200, Y a personne a écrit:
J'essaye en vain d'afficher en une seule requête (My)SQL (nom, prenom)
les 3 membres liés au membre 1.
La difficulté est que 1(ou les autres) peuvent se retrouver dans
lia_fk_membres1 ou lia_fk_membres2.
Il y a plusieurs façons de faire, par exemple :
SELECT * FROM Membres WHERE mem_id IN
(
SELECT lia_fk_membres1 FROM Liaisons WHERE lia_fk_membres2=1
UNION
SELECT lia_fk_membres2 FROM Liaisons WHERE lia_fk_membres1=1
);
On peut aussi faire des jointures avant ou après l'union.
On peut remplacer l'union par un WHERE avec un OR et un CASE dans la
projection.
--
Patrick Mevzek . . . . . . . . . . . . . . Dot and Co
<http://www.dotandco.net/> <http://www.dotandco.com/>
Le Sat, 26 Apr 2008 19:49:27 +0200, Y a personne a écrit:
J'essaye en vain d'afficher en une seule requête (My)SQL (nom, prenom) les 3 membres liés au membre 1.
La difficulté est que 1(ou les autres) peuvent se retrouver dans lia_fk_membres1 ou lia_fk_membres2.
Il y a plusieurs façons de faire, par exemple :
SELECT * FROM Membres WHERE mem_id IN ( SELECT lia_fk_membres1 FROM Liaisons WHERE lia_fk_membres2=1 UNION SELECT lia_fk_membres2 FROM Liaisons WHERE lia_fk_membres1=1 );
On peut aussi faire des jointures avant ou après l'union. On peut remplacer l'union par un WHERE avec un OR et un CASE dans la projection.
-- Patrick Mevzek . . . . . . . . . . . . . . Dot and Co <http://www.dotandco.net/> <http://www.dotandco.com/>
Y a personne
Patrick Mevzek a écrit :
Le Sat, 26 Apr 2008 19:49:27 +0200, Y a personne a écrit:
J'essaye en vain d'afficher en une seule requête (My)SQL (nom, prenom) les 3 membres liés au membre 1.
La difficulté est que 1(ou les autres) peuvent se retrouver dans lia_fk_membres1 ou lia_fk_membres2.
Il y a plusieurs façons de faire, par exemple :
SELECT * FROM Membres WHERE mem_id IN ( SELECT lia_fk_membres1 FROM Liaisons WHERE lia_fk_membres2=1 UNION SELECT lia_fk_membres2 FROM Liaisons WHERE lia_fk_membres1=1 );
On peut aussi faire des jointures avant ou après l'union. On peut remplacer l'union par un WHERE avec un OR et un CASE dans la projection.
Merci pour ta réponse rapide.
Ca fonctionne correctement.
J'avais bien testé avec UNION, mais je connaissais pas la technique du IN
merci
Patrick Mevzek a écrit :
Le Sat, 26 Apr 2008 19:49:27 +0200, Y a personne a écrit:
J'essaye en vain d'afficher en une seule requête (My)SQL (nom, prenom)
les 3 membres liés au membre 1.
La difficulté est que 1(ou les autres) peuvent se retrouver dans
lia_fk_membres1 ou lia_fk_membres2.
Il y a plusieurs façons de faire, par exemple :
SELECT * FROM Membres WHERE mem_id IN
(
SELECT lia_fk_membres1 FROM Liaisons WHERE lia_fk_membres2=1
UNION
SELECT lia_fk_membres2 FROM Liaisons WHERE lia_fk_membres1=1
);
On peut aussi faire des jointures avant ou après l'union.
On peut remplacer l'union par un WHERE avec un OR et un CASE dans la
projection.
Merci pour ta réponse rapide.
Ca fonctionne correctement.
J'avais bien testé avec UNION, mais je connaissais pas la technique du IN
Le Sat, 26 Apr 2008 19:49:27 +0200, Y a personne a écrit:
J'essaye en vain d'afficher en une seule requête (My)SQL (nom, prenom) les 3 membres liés au membre 1.
La difficulté est que 1(ou les autres) peuvent se retrouver dans lia_fk_membres1 ou lia_fk_membres2.
Il y a plusieurs façons de faire, par exemple :
SELECT * FROM Membres WHERE mem_id IN ( SELECT lia_fk_membres1 FROM Liaisons WHERE lia_fk_membres2=1 UNION SELECT lia_fk_membres2 FROM Liaisons WHERE lia_fk_membres1=1 );
On peut aussi faire des jointures avant ou après l'union. On peut remplacer l'union par un WHERE avec un OR et un CASE dans la projection.
Merci pour ta réponse rapide.
Ca fonctionne correctement.
J'avais bien testé avec UNION, mais je connaissais pas la technique du IN