Partage
  • Partager sur Facebook
  • Partager sur Twitter

[MySQL] Conseil sur la façon de joindre 3 tables

    19 février 2012 à 21:01:27

    Bonsoir,

    je suis en train de réaliser un jeu par navigateur dans le quel j'ai un plateau de jeu sur le quel sont disposés des objets.
    Les objets peuvent être de 3 sorte : arme, matériau ou aliment
    j'utilise donc 4 tables :

    (entre [] j'ai indiqué la clé commune aux 4)

    armes : [id_objet]
    matériaux : [id_objet]
    aliments : [id_objet]

    objets_positions : [id_objet]

    Les objets dans mon objet position peuvent être de 3 natures, et selon la nature je dois rechercher dan l'une des trois tables du dessus. Comment faire ça ? (je connais les jointures, donc ce que je veux c'est une explication théorique, plus que pratique)

    Ce soir, j'ai essayer : de créer une champ nom_objet présent dans les 3 tables et de faire une jointure entre les 3.
    Mais le problème c'est que si mon objet est absent de l'une des tables, ma requête n'aboutit pas (et c'est forcément le cas, car mon objet ne peut être que d'un seul type : arme, OU matériau OU aliment.)


    Merci :)
    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2012 à 22:45:47

      Bonjour,

      Bien que dans des tables différentes, ils ont des identifiants qui se recoupent pas ?

      C'est à dire que si l'objet 1 existe dans aliments, il n'y aura aucun objet 1 dans matériaux, armes ?

      Si oui,

      SELECT a.*, b.*, c.*, d.*
      FROM objets_positions a
      LEFT OUTER JOIN armes b
      ON a.id_objet = b.id_objet
      LEFT OUTER JOIN matériaux c
      ON a.id_objet = c.id_objet
      LEFT OUTER JOIN aliments d
      ON a.id_objet = d.id_objet;
      


      Il y aura des NULL dans les cases vides :)
      • Partager sur Facebook
      • Partager sur Twitter

      [MySQL] Conseil sur la façon de joindre 3 tables

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown