PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 12-09-2009 22:16:21

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Question sur les jointures

Bonjour,
J'ai vu sur u site (je ne sais plus lequel) qu'il fallait utiliser les jointures interne de préférence.
MAis j'ai une petite question.

Imaginons une table membre classique : idmembre | pseudo | mdp |
et une table livre_dor : idmessage | idmembre | message

Pour afficher le pseudo du membre, en sachant que le membre peu poster plusieurs message, il faudra bien faire une requète externe? ou bien une requte interne suffiit?

MErci d'avance

Hors ligne

#2 13-09-2009 04:44:01

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Question sur les jointures

Saluton,
La jointure externe (LEFT ou RIGHT [OUTER] JOIN), par rapport à la jointure interne ([OUTER] JOIN), permet de rapatrier toutes les lignes d'une table qui correspondent aux clauses des filtres, WHERE et/ou HAVING, même lorsque la clause de la jointure avec l'autre table ne sont pas réalisées.
Une illustration avec ton exemple :

SELECT pseudo, message
FROM livre_dor
INNER JOIN membres
USING idmembre

ne retourne que les messages pour lesquels un pseudo correspond.
Alors que

SELECT pseudo, message
FROM livre_dor
LEFT JOIN membres
USING idmembre

retourne tous les messages même s'il n'y a plus de membre correspondant.
Plus fort

SELECT pseudo, message
FROM livre_dor
INNER JOIN membres
USING idmembre
WHERE m.id_membre IS NULL

ne retourne que les messages sans pseudo.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 13-09-2009 09:52:28

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Question sur les jointures

Merci beaucoup pour ta réponse.
en fait une jointure interne suffit alors.

Hors ligne

#4 13-09-2009 10:48:27

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Question sur les jointures

Il est vrai que dans ton cas, on voit mal pourquoi un message n'aurait plus d'auteur, livre_dor.id_membre devant, idéalement, être une clé étrangère, et une contrainte ON DELETE CASCADE devant être présente dans la définition de la table livre_dor pour éviter des messages orphelins.
Mes exemples, avec LEFT JOIN, sont juste des illustrations proposées à partir de tes tables, bien que celles-ci ne rendent pas l'illustration très pertinente.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums