Aller au contenu

Pb de jointure


MarvinLeRouge

Sujets conseillés

Salut,

C'est surement tout bête comme jointure, mais je n'arrive pas à la trouver :

J'ai 3 tables : joueurs, parties et scores

La table joueurs

  • joueur_id : l'id
  • joueur_nom

La table parties

  • partie_id : l'id
  • partie_numero : un nombre désignant la partie de façon plus conviviale (le nom de la partie en quelque sorte)

La table scores

  • score_id : l'id
  • partie_id : l'id de la partie dans laquelle ce score a été obtenu
  • joueur_id : l'id du joueur qui a obtenu ce score
  • score : le score en question

Ces tables contiennent des données correspondant à un tournoi dans lequel :

  • de nouveaux joueurs peuvent s'inscrire avant toute partie
  • un joueur ne participe pas forcément à toutes les parties
  • une partie ne contient donc pas nécessairement TOUS les joueurs connus

Je veux simplement récupérer, pour un joueur donné,

  • en donnée 1 : la liste de TOUTES les parties (qu'il y ait participé ou pas)
  • en donnée 2 : son score à la partie en question, ou NULL s'il n'y était pas

Voilà, la requète est probablement toute bête, mais là je pédale dans la semoule.

Merci :)

Lien vers le commentaire
Partager sur d’autres sites

Un truc dans le style :

SELECT partie_nom,joueur_nom,score FROM parties P
LEFT JOIN scores S ON S.partie_id = P.partie_id
LEFT JOIN joueurs J ON J.joueur_id = S.joueur_id
WHERE S.joueur_id = ".$num_joueur." OR s.score IS NULL

Voilà donc une base pour te sortir de la semoule, à adapter et vérifier que tes conditions sont bien remplies.

Et $num_joueur étant la variable du numéro de joueur.

Lien vers le commentaire
Partager sur d’autres sites

Bon bah ça veut pas marcher.

Je me suis débrouillé en créant des tableaux de la bonne taille, pré-remplis avec la valeur correspondant à "enregistrement absent" (oui je sais c'est moche).

M'est avis qu'il y a une histoire d'ordre de jointure là-dedans, je vais fouiller ça un peu plus dès que j'aurais une minute.

Merci :)

Lien vers le commentaire
Partager sur d’autres sites

En fait, je ne récupère pas les bons sets de données. Je farfouille là-dedans, et je te dirai ce qu'il en est.

N.B. : Si tu n'es pas devin, comment se fait-il que tu aies une boule de cristal ? :D

Lien vers le commentaire
Partager sur d’autres sites

SELECT partie_nom,joueur_nom,score FROM parties P

LEFT JOIN scores S ON P.partie_id = S.partie_id

LEFT JOIN joueurs J ON J.joueur_id = S.joueur_id

WHERE J.id = ".$num_joueur."

Modifié par pluriels
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...