IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

JOIN sur des colonnes de table avec le même nom [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Points : 64
    Points
    64
    Par défaut JOIN sur des colonnes de table avec le même nom
    Bonsoir,

    Pour résumer, j'ai une table "book" dans laquelle j'ai d'assez nombreux champs (ici vous parlez de colonne) de type "id" qui pointent (ou qui sont en jointure) vers d'autres table

    Par exemple, dans cette table "book", j'ai un "id_reliure" qui pointe vers un type de reliure donné dans une autre table qui met en correspondante de cet "id_reliure" une description de la reliure (par exemple "Soft cover" ou "hard cover", etc.). Ce champ de description est nommé "descr".

    J'ai aussi dans cette table "book" un "id genre" qui pointe vers une table "genre" où il y la la description des genres (maths, physique, chimie, roman, etc.). Cette colonne porte aussi le nom de "descr".

    Lorsque je fait ma requête avec les jointures, etc., tout fonctionne bien. A ceci près que lorsque j'interroge le résultat de la requête, je ne sais pas quel colonne sélectionner.

    En fait, si, je sais, mais le problème est que il y a maintenant DEUX champs (colonnes) qui portent le même nom "descr". Et c'est celui de la dernier jointure qui prime. Comment donc acceder à l'autre champ "descr" puisque il porte le même nom ?

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while ($tab_record_book=mysql_fetch_object($query_book_result)) {
       $tab_record_book->id_book,
       $tab_record_book->title
       $tab_record_book->editor
       $tab_record_book->summary
       $tab_record_book->isbn10
       $tab_record_book->isbn13
       $tab_record_book->descr  // champs "descr" de la table genre
       // comment appeler l'autre champs "descr" de la table reliure
      etc.
      etc.
    }
    Merci.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 220
    Points : 28 201
    Points
    28 201
    Par défaut
    C'est au niveau de la requête (que tu ne montres pas ici) qu'il faut jouer. Il faut mettre des alias sur les champs.


    Tu auras une requête du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_book, ...., TaTableReliure.descr as Reliure, TaTableGenre.descr as Genre FROM .....
    Ensuite dans ton résultat, tu ne liras pas le champ descr qui n'existera pas, mais tu liras le champ Reliure qui contiendra la valeur du champ descr de la table reliure et le champ Genre qui contiendra la valeur du champs descr de la table genre

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 384
    Points
    28 384
    Par défaut
    Simplement en donnant un nom d'alias à tes colonnes dans la requête...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT tb1.descr AS descr_de_tb1
        ,   tb2.descr AS descr_de_tb2
    [Edit] Grilled

  4. #4
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 277
    Points : 64
    Points
    64
    Par défaut
    Merci a vous deux.

    Je teste cela demain et je tag a résolue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. table avec des colonnes calculées (table qui stocke des formules)
    Par messi1987 dans le forum Développement
    Réponses: 15
    Dernier message: 13/01/2014, 17h16
  2. [WD12] activer la loupe sur des colonnes de table fichier
    Par karim15 dans le forum WinDev
    Réponses: 1
    Dernier message: 13/10/2012, 03h10
  3. Réponses: 7
    Dernier message: 18/06/2012, 11h30
  4. TRIGGER sur des colonnes de la table
    Par hardmehdi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/09/2007, 16h36
  5. Check sur une colonne de table "en cours"
    Par in dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/07/2003, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo