Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de jointure Mysql

Sujet résolu
    20 décembre 2011 à 4:00:50

    Salut tout le monde !

    En plein dans ma base de donnée, j'en suis arrivée à un gros point d'interrogation. Je pense avoir mal pensé le truc, mais comme je me suis enfermée dans ma méthode je ne vois pas d'autre façon de le faire. C'est pourquoi, je demande votre aide, à vous qui avez un oeil externe au projet. Surtout que je suis sûre que c'est quelque chose qui a déjà été fait, donc les solutions simples existent.

    Alors, passons à mon soucis. Pour faire simple, il s'agit d'un site sur un magasin de jeux vidéos, mangas et produits dérivés. Pour chacun de ces produits, j'ai fait une table. (donc la table jeux, la table mangas et la table pdt) Pour informer leurs utilisateurs de leurs arrivages, ils veulent émettre des news. J'ai donc créé la table news. Je voulais lier la news au produit dont elle parle, donc j'ai fait un champ produit_id qui serait joint à la table correspondante. Mais là, je me suis posée la question : lorsque je veux afficher toutes les news, comme je fais mes jointures. Parce que je peux pas lui dire produit_id = id_mangas, par exemple, puisqu'il y a des fois où, ce sera = id_jeux etc. J'ai eu alors l'idée de faire une table "stock" qui ferait le lien avec deux champs produit_id et id_produit (je sais c'est flou comme noms, mais je m'y retrouve,) Le premier étant un id incrémenté automatiquement, et le second celui du produit dans sa propre table. Mais j'ai le sentiment qu'il me manque un champ. J'ai demandé à une amie développeuse qui ne s'y connait pas trop en sql qui m'a dit "c'est simple, fais un troisième champs 'nom_table'". Je trouve l'idée intéressante, mais dans ce cas, quelle "ordre" je lui donne ?

    Voilà. J'espère que c'est pas trop fouillis et que vous avez compris. S'il y a une chose que j'ai mal dit, n'hésitez pas à demander j'expliquerais.

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      20 décembre 2011 à 6:20:22

      Salut.
      Je ne connais pas tes tables mais il semble que ton modèle soit faux.
      On ne fait pas plusieurs tables pour des produits différents.
      Tes produits sont une entité.
      Ils doivent à peu près avoir la même structure.
      Je pense donc qu'il faut revoir ton modèle, avec une table "produit" qui contiendra, entre autre, le champ "type", qui lui même contiendra les valeurs "manga" ou "jeux" ou "pdt"...

      • Partager sur Facebook
      • Partager sur Twitter
        20 décembre 2011 à 23:20:43

        Bonjour,
        avant tout, merci pour ta réponse.
        Le soucis c'ets que justement, ils n'ont pas la même structure, c'est pourquoi je les ai divisés en plusieurs tables. Mais je vois ce que tu veux dire, et c'est bien ce que je craignais. Je vais essayer de repenser la chose différemment tout en conservant une table produit.

        Pour t'expliquer rapidement, pour les jeux, on va vouloir connaître leur console, leur pegi, leur genre, pour les mangas, leur auteur, leur tome et tomes totaux, leur éditeur et pour les produits dérivés, ce qu'ils sont déjà (tshirt, carte, poster, figurine...) et c'est tout. Après, c'est vrai que les autres champs sont communs : stock, arrivee et titre.
        • Partager sur Facebook
        • Partager sur Twitter
          20 décembre 2011 à 23:52:39

          Il te faut seulement une table mère produits dont hérite les tables manga, jeuxvideo ou autres.
          Les tables filles posséderont un id qui fera référence à l'id auto-incrémenté de la table produit.
          Et dans table produit tu peux mettre les champs qui sont strictement identiques quelques soit le produit, comme le prix par exemple.
          • Partager sur Facebook
          • Partager sur Twitter
            21 décembre 2011 à 10:41:57

            Tu as raison, je sais pas pourquoi j'avais prit mon problème à l'envers en faisant mes tables. Merci beaucoup =)
            • Partager sur Facebook
            • Partager sur Twitter

            Problème de jointure Mysql

            × 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