Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher un nom en fonction d'un ID dans une autre

Requête SQL Afficher un nom en fonction d'un ID dans une autre table

Sujet résolu
    16 mai 2019 à 8:09:23

    Bonjour, comme le titre l'indique je cherche à faire afficher non pas le ID (1,2,3) mais le nom au quel correspond l'ID

    Je dois afficher le nom de chaque Magasin dans lequel travail un employé ainsi que le rayon et sa spécialité

    Voici la requête que j'ai commencé à faire mais je ne sais pas comment faire la condition WHERE

    et lui demander d'afficher le nom correspondant à chaque Num

    SELECT * FROM employe INNER JOIN magasin
    ON employe.`Num-M` = magasin.`Num-M`
    INNER JOIN rayon ON employe.`Num-R` = rayon.`Num-R`
    INNER JOIN specialite ON employe.`Num-S` = specialite.`Num-S`
    WHERE



    Ma table employé :

     



    -
    Edité par FarCry 16 mai 2019 à 8:17:23

    • Partager sur Facebook
    • Partager sur Twitter
      16 mai 2019 à 8:50:01

      Je ne vois pas l'information "nom du magasin" dans la table employé (ce qui est logique jusque là) du coup j'imagine que tu doit avoir une autre table avec le magasin (tu fait d'ailleurs la jointure)

      C'est tout simplement le * dans ton select qui va définir les champs que tu souhaite récupérer, * signifie "tout", mais tu peux très bien remplacer par des champs spécifique en spécifiant le nom de la table et le nom du champ. par exemple, si tu as une colonne "nom" dans la table magasin :

      SELECT magasin.nom, employe.* FROM ... INNER JOIN ...

      et tu peux aussi mettre des alias pour éviter les confusion (si ton emploiyé a une colonne nom et ton magasin une colonne nom, tu te retrouve avec 2 colonne nom en sortie sans savoir laquelle correspond à quoi)

      SELECT magasin.nom as NomMagasin, employe.nom as NomEmploye FROM ... INNER JOIN ...




      • Partager sur Facebook
      • Partager sur Twitter
        16 mai 2019 à 9:52:25

        Merci, j'ai fais comme tu m'as dit sql m'indique une erreur :

        SELECT `magasin.Nom-M` AS NomMagasin, employe.* FROM employe INNER JOIN magasin
        ON `employe.Num-M` = `magasin.Num-M`



        Et ma table magasin se présente ainsi :

        Je pense que ce qui pose problème c'est le - SQL le prend comme une soustraction, je pense que j'ai mal positionné mes accents

        -
        Edité par FarCry 16 mai 2019 à 9:54:24

        • Partager sur Facebook
        • Partager sur Twitter
          16 mai 2019 à 9:56:26

          Bonjour,

          L'erreur est normale tu as encadré (avec quote oblique) la table et le nom de colonne dans le même élément ...

          SELECT `magasin`.`Nom-M` AS NomMagasin, employe.* FROM employe INNER JOIN magasin
          ON `employe`.`Num-M` = `magasin`.`Num-M`

          ça ira mieux ...

          -
          Edité par Benzouye 16 mai 2019 à 9:58:55

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            16 mai 2019 à 10:04:26

            SELECT `magasin`.`Nom-M` AS NomMagasin, employe.* FROM employe INNER JOIN magasin
            ON `employe`.`Num-M` = `magasin`.`Num-M`

            J'avais déjà essayé comme ça, j'ai toujours la même erreur :/

            • Partager sur Facebook
            • Partager sur Twitter
              16 mai 2019 à 10:40:52

              Tu es sur d'avoir une colonne "Nom-M" dans ta table magasin? faute de frappe?
              • Partager sur Facebook
              • Partager sur Twitter
                16 mai 2019 à 11:16:53

                Ah oui :/ c'est pour les table rayon et specialite que j'avais mis des nom je suis bête. Merci !^^

                ça marche, pour les magasin comme ils portent tous logiquement le même nom c'est l'adresse qu'il faut afficher ^^

                -
                Edité par FarCry 16 mai 2019 à 11:20:06

                • Partager sur Facebook
                • Partager sur Twitter
                  16 mai 2019 à 11:35:22

                  D'un autre côté je te déconseille fortement l'utilisation de tiret dans les noms de colonnes. Effectivement ça fonctionne sans problème pour la base de données, mais c'est une mauvaise pratique.

                  Pourquoi? Tout simplement car si tu utilise un ORM (object-relational mapping) qui va faire la liaison entre ton application et ta base de données, tu pourrais dans certains cas te retrouver avec des noms de variable qui contiennent des tiret (ce qui ne sera pas compilable), ou si l'orm est bien fait, il remplacera le tiret par un autre caractère compilable (underscore, espace... selon le paramétrage) et dans ce cas, tes noms de variables ne seront pas identiques aux noms de colonne (pas très pratique)

                  Et même sans ORM, en POO tu devras créer des classes avec des propriétés correspondants aux colonnes sans pouvoir reprendre strictement les mêmes noms.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 mai 2019 à 19:30:36

                    Merci, je sais mais je dois suivre le cahier des charges à la lettre ^^
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Afficher un nom en fonction d'un ID dans une autre

                    × 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