Partage
  • Partager sur Facebook
  • Partager sur Twitter

Req complexe avec plusieurs ref à d'autres tables

Sujet résolu
    25 mars 2020 à 19:43:16

    Bonjour, je réalise un petit projet perso pour m'occuper pendant le confinement. J'ai fais le MCD suivants avec lequel j'ai déduis le MLD suivant:
    • USERS(id_users,  id_paniers,  ....)
    • PANIERS(id_panier)
    • PRODUITS(id_produit,  .......)
    • PRODUITS_PANIERS(id_panier,  id_produit)
    J'ai l'id de l'utilisateur et je souhaite récupérer les produits du paniers de l'utilisateur.(L'id du panier n'est pas forcement égal a l'id de l'utilisateur car pour l'instant un utilisateur peut ne pas avoir de panier).
    Je suis un peu perdu, je ne sait pas trop comment faire.
    J'ai aucune idée de cette requête sql.
    Quelqu'un peut-il m'aider?(si ma conception est complètement nulle, hésitez pas à me le dire).

    -
    Edité par Chauveincurved 25 mars 2020 à 21:18:19

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2020 à 16:05:09

      Bonjour,

      Dans ton exemple, un utilisateur ne pourra avoir qu'un seul panier ... En revanche, un panier pourra être affecté à plusieurs utilisateurs ... Je ne suis pas certain que ce soit le comportement voulu ...

      Le modèle serait donc plutôt :

      • utilisateur ( id_utilisateur [pk], etc. )
      • produit ( id_produit [pk], etc. )
      • panier ( id_panier [pk], id_utilisateur [fk], etc. )
      • panier_produit ( id_panier [pk][fk], id_produit [pk][fk], quantite )

      Sinon, les jointures sont quand même la base du SQL, il faudrait peut être te former avant tout ... non ?

      La requête de base serait :

      SELECT
      	U.id_utilisateur,
      	PA.id_panier,
      	PR.id_produit,
      	PP.quantite
      FROM
      	utilisateur U
      		INNER JOIN panier PA
      			ON U.id_utilisateur = PA.id_utilisateur
      		INNER JOIN panier_produit PP
      			ON PA.id_panier = PP.id_panier
      		INNER JOIN produit PR
      			ON PP.id_produit = PR.id_produit
      WHERE U.id_utilisateur = 'id souhaité'

      Liens conseillés

      -
      Edité par Benzouye 26 mars 2020 à 16:05:40

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        26 mars 2020 à 17:36:56

        @Benzouye

        Je souhaitais juste la logique de la requête, mais merci à toi.

        Sinon, je ne souhaite pas que l'utilisateur est plusieurs paniers. Peut être que c'est un mauvais choix pour le futur, temps pis.

        Le reste de ma bdd en revanche couvre le plus de cas possible ne t’inquiète pas.

        Bonne Soirée et merci encore.

        -
        Edité par Chauveincurved 26 mars 2020 à 17:37:30

        • Partager sur Facebook
        • Partager sur Twitter
          26 mars 2020 à 19:58:07

          Chauveincurved a écrit:

          je ne souhaite pas que l'utilisateur est plusieurs paniers

          Dans ce cas, il faudra mettre une contrainte UNIQUE sur la colonne id_panier dans ta table utilisateur...

          Mais je ne vois pas l'intérêt de la table panier du coup ...

          Enfin bon, c'est ton projet ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

          Req complexe avec plusieurs ref à d'autres 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