PHP|Débutant :: Forums

Advertisement

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

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

#1 09-09-2009 15:41:40

rickways
Membre
Inscription : 30-08-2009
Messages : 38

Faire une jointure avec une troisième table

Bonjour,

C'est encore moi !

Bon voilà:

J'ai une page qui affiche la liste des poèmes présents (table themedumois), suivi du nombre de commentaire reçu pour chaque poème (table commentaires2)

J'ai fait jusqu'à présent requête suivante avec jointure qui fonctionne parfaitement:

SELECT themedumois.id, themedumois.titre, themedumois.poeme, themedumois.auteur, themedumois.datedupoeme, themedumois.theme, themedumois.miseenpage, themedumois.liencomment, themedumois.valid, count(commentaires2.id) as nbr
FROM themedumois
LEFT JOIN commentaires2
ON commentaires2.idpoeme = themedumois.id AND tablepoeme="themedumois"
WHERE theme ="'.$theme.'" AND valid=1
GROUP BY themedumois.id
ORDER BY id DESC


J'aimerais faire une troisième jointure avec la table des membres (pdf_membre) pour vérifier que le statut du membre n'est pas 8 (statut inactif)
le champs statut de ma table pdf_membre s'appelant statut

mais alors là, ça dépasse mes compétences, même si je pense que ce ne doit pas être si inaccessible,

quelle type de jointure dois-je choisir et à quel endroit ?

Merci d'avance

ERIC

Hors ligne

#2 09-09-2009 15:42:46

rickways
Membre
Inscription : 30-08-2009
Messages : 38

Re : Faire une jointure avec une troisième table

Petite précision, le but est d'exclure les poèmes dont les membres ont le statut 8

Hors ligne

#3 10-09-2009 13:53:43

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

Re : Faire une jointure avec une troisième table

Saluton,
Il faudrait nous dire entre quelles tables tu veux faire la jointure et sur quelle(s) colonne(s) elle s'opère


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

#4 10-09-2009 16:45:20

rickways
Membre
Inscription : 30-08-2009
Messages : 38

Re : Faire une jointure avec une troisième table

Je vois que je n'ai pas été assez clair (car j'avais tout dit dans le premier message)

Table 1: themedumois (table contenant tous les poèmes envoyés par les membres)
Champs: id, titre, poeme, auteur, datedupoeme, theme, miseenpage, liencomment, valid

Table 2: commentaires2 (table contenant les commentaires laissés sur les poèmes, avec comme lien idpoeme correspondant à id de la table themedumois du poème concerné)
Champs: id, idpoeme, auteurpoeme, tablepoeme (ce champs permet d'indiquer si il s'agit de la table themedumois ou d'une autre), nom, auteur, email, texte, date

Table 3 pdf_membre (contenant tous les membres du site)
champs: idmembre, pseudo, passe, mail, confirm, nom, prenom, pays, naissance, site, presentation, citation, dateinscription, photo, statut, validdn


Je désire donc faire une dernière jointure, à partir du pseudo du membre qui a écrit le poème avec la table 3 pdf_membre, afin de vérifier que son statut est différent de 8

Hors ligne

#5 10-09-2009 16:47:26

rickways
Membre
Inscription : 30-08-2009
Messages : 38

Re : Faire une jointure avec une troisième table

Petite précision:

On a donc entre table 1 et 2 une jointure à partir de themedumois.id=commentaires2.idpoeme ; et une jointure entre les trois table avec themedumois.auteur=commentaires2.auteurpoeme=pdf_membre.pseudo

Hors ligne

#6 11-09-2009 04:32:13

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

Re : Faire une jointure avec une troisième table

A quoi te sert la colonne commentaires2.auteurpoeme ?
Dans le SAT (Schéma d'Accès Thérorique) aux données cette dépendance fonctionnelle aurait dû t'apparaître redondante, puisque tu peux accéder à l'auteur par la double jointure :
commentaires2.tablepoeme->themedumois.id
puis themedumois.auteur->pdf_membre.idmembre.
Mais j'ai comme l'impression que ton MPD (Modèle Physique des Données) est issu d'une démarche (MCD->MLD)* pas très nette.
Ce qui explique tes difficultés à écrire les jointures relationnelles.

* MCD (Modèle Conceptuel des Données) MLD (Modèle Logique des Données)


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

#7 11-09-2009 08:21:20

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

Re : Faire une jointure avec une troisième table

En fait, la structure relationnelle des trois tables devrait être :
commentaires2.idpoeme = (FK issue de themedumois.id)
commentaires2.auteur =(FK issue de pdfmembre.idmembre)
themedumois.auteur =(FK issue de pdfmembre.idmembre)
FK pour Foreign Key (clé étrangère)


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

#8 11-09-2009 09:02:59

rickways
Membre
Inscription : 30-08-2009
Messages : 38

Re : Faire une jointure avec une troisième table

Coucou Kris,

lorsque je te lis, je me demande toujours si je suis bien sur PHPDEBUTANT ou AILLEURS, mais ce n'est pas déplaisant de lire des choses aussi précises.

Ma bdd a été faite à coup d'essai erreur, d'amélioration avec des ajouts manuels pour récupérer les bétises à hauteur de 1000 fois écrire le même truc sans savoir que je pouvais utiliser update pour un champs, etc...etc...

Je suis un vrai newbie qui n'a que très peu de connaissance et pas mal de bidouille....

Pour ce qui est de la colonne commentaires2.auteurpoeme, elle mes sert normalement à pouvoir récupérer dans la table pdf_membre le mail de l'auteur (car j'envoie automatiquement un mail à l'auteur du poème)

Mais effectivement, je peux y accéder autrement....

Il va donc falloir que je me penche sur les MPD, mais je ne crois pas que j'aurais le temps d'être assez callé dans ce domaine pour programmer ce que j'ai à faire...

Avant que je lance la nouvelle version du site, il est peut-être temps d'analyser ma bdd, mais là je vais avoir besoin d'un gros coup de main...

Hors ligne

#9 11-09-2009 13:46:44

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

Re : Faire une jointure avec une troisième table

rickways a écrit :

lorsque je te lis, je me demande toujours si je suis bien sur PHPDEBUTANT ou AILLEURS, mais ce n'est pas déplaisant de lire des choses aussi précises.

au nom de quoi la rigueur et la précision ne devraient-elles pas être aussi un objectif de débutant ?
On prête à Spartacus le propos suivant :

la jeunesse est un défaut dont je me corrige chaque jour un peu

Inutile d'attendre d'être devenu une vieille barbe, comme moi, pour s'attacher à concevoir proprement les choses, on y gagne tellement en tranquillité d'esprit et en crédibilité.


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

#10 12-09-2009 00:07:37

rickways
Membre
Inscription : 30-08-2009
Messages : 38

Re : Faire une jointure avec une troisième table

Je ne critique pas la rigueur et la précision, je trouve juste que en fonction de mes besoins et de mes compétences, c'est un peu trop décalé
(en apprentissage on parle de décalage optimal, je ne sais pas si tu connais)

Pour ce qui est de tes infos, elles sont franchement les bienvenues, elles me permettent de réfléchir à des questions que je ne m'étais pas encore posées, et comme je te disais, il me faudrait de l'aide pour arriver à analyser ma bdd, puis à l'adapter à une nouvelle conception (si c'est réalisable)

Merci encore pour ton aide...

Hors ligne

#11 12-09-2009 08:10:35

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

Re : Faire une jointure avec une troisième table

rickways a écrit :

comme je te disais, il me faudrait de l'aide pour arriver à analyser ma bdd, puis à l'adapter à une nouvelle conception (si c'est réalisable).

Mais ce forum est là pour ça, aussi, non ?


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