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

SQL Oracle Discussion :

Erreur : nom de colonne ambigu dans la liste de sélection


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Par défaut Erreur : nom de colonne ambigu dans la liste de sélection
    Bonjour

    je travaille sur une (très) vieille base Oracle 7 dans le cadre d'un stage
    j'utilise des connexion ODBC via Access 97 pour extraire les données en vue de la sauvegarder à plat

    j'ai une requête qui me sort une erreur qui semble explicite et pourtant je ne vois pas l'erreur
    erreur ORA-00960: Erreur nom de colonne ambigu dans la liste de sélection

    l'erreur se produit lorsque j'ajoute une table thésaurus (en rouge)
    pourtant, le nom du champ est préfixé du nom de la table

    d'avance merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    SELECT 
    ANAT_TABNUMERO_DOSSIER.ND_N_IDPATIENT, 
    ANAT_TABNUMERO_DOSSIER.ND_T_NUM_DOSSIER, 
    ANAT_TABNUMERO_DOSSIER.ND_T_NOM, 
    ANAT_TABNUMERO_DOSSIER.ND_T_PRENOM, 
    IIf(ANAT_TABNUMERO_DOSSIER.ND_N_SEXE='1','Masculin',IIf(ANAT_TABNUMERO_DOSSIER.ND_N_SEXE='2','Féminin','Non déterminé')) AS ND_N_SEXE, 
    ANAT_TABNUMERO_DOSSIER.ND_D_DATE_NAISS, 
    ANAT_TABNUMERO_DOSSIER.ND_T_IPUM, 
    ANAT_TABNUMERO_SIGMA.S_N_IDVENUE, 
    ANAT_TABNUMERO_SIGMA.S_T_SIGMA, 
    ANAT_TABPREALABLE_SPECIALITE.SPECIALITE_ID, 
    ANAT_TABPREALABLE_SPECIALITE.N_AGE, 
    ANAT_TABPREALABLE_SPECIALITE.D_DATE_EXAMEN, 
    ANAT_TABPREALABLE_SPECIALITE.T_NUM_EXAMEN, 
    ANAT_TABPREALABLE_SPECIALITE.T_DEMANDEUR, 
    ANAT_TABPREALABLE_SPECIALITE.T_NOM_DEMANDEUR, 
    ANAT_TABPREALABLE_SPECIALITE.T_ADR1, 
    ANAT_TABPREALABLE_SPECIALITE.T_ADR2, 
    ANAT_TABPREALABLE_SPECIALITE.T_CP, 
    ANAT_TABPREALABLE_SPECIALITE.T_VILLE, 
    ANAT_TABPREALABLE_SPECIALITE.T_EXAMEN_DIRECT, 
    ANAT_TABPREALABLE_SPECIALITE.T_RENS, 
    ANAT_TABPREALABLE_SPECIALITE.T_DENS_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_DENS_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_PHOTO_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_PHOTO_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_GOUTTES, 
    ANAT_TABPREALABLE_SPECIALITE.T_NOM_PHOTO_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_NOM_PHOTO_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_EXAMEN, 
    ANAT_TABPREALABLE_SPECIALITE.T_CONCLU, 
    ANAT_TABPREALABLE_SPECIALITE.T_COTATION, 
    ANAT_TABPREALABLE_SPECIALITE.T_PRN_DEMANDEUR, 
    ANAT_TABPREALABLE_SPECIALITE.T_EXAM_ANTERIEUR, 
    ANAT_TABPREALABLE_SPECIALITE.T_DS_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_DS_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_SURF_CM_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_SURF_CM_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_CV_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_CV_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_POLIT
    FROM ((ANAT_TABNUMERO_DOSSIER LEFT JOIN ANAT_TABNUMERO_SIGMA ON ANAT_TABNUMERO_DOSSIER.ND_N_IDPATIENT = ANAT_TABNUMERO_SIGMA.S_N_IDPATIENT) LEFT JOIN (ANAT_TABSPECIALITE_VENUE LEFT JOIN ANAT_TABPREALABLE_SPECIALITE ON ANAT_TABSPECIALITE_VENUE.SPECIALITE_ID = ANAT_TABPREALABLE_SPECIALITE.SPECIALITE_ID) ON ANAT_TABNUMERO_SIGMA.S_N_IDVENUE = ANAT_TABSPECIALITE_VENUE.SV_N_IDVENUE) LEFT JOIN ANAT_T_HOSPITALISE ON ANAT_TABPREALABLE_SPECIALITE.T_TYPE_HOSPI = ANAT_T_HOSPITALISE.T_CODE
    ORDER BY ANAT_TABNUMERO_DOSSIER.ND_N_IDPATIENT;

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 983
    Par défaut
    Bonsoir,

    Où la table thésaurus ?

    Avez vous testé de remplacer AS ND_N_SEXE par AS ND_N_SEXE2 ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Par défaut
    Bonjour

    merci pour votre réponse
    le problème ne se situe pas à ce niveau
    si je supprime la table thésaurus, pas de problème sur la requête

    la table thésaurus est surlignée en rouge dans la code que je remets ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    SELECT 
    ANAT_TABNUMERO_DOSSIER.ND_N_IDPATIENT, 
    ANAT_TABNUMERO_DOSSIER.ND_T_NUM_DOSSIER, 
    ANAT_TABNUMERO_DOSSIER.ND_T_NOM, 
    ANAT_TABNUMERO_DOSSIER.ND_T_PRENOM, 
    IIf(ANAT_TABNUMERO_DOSSIER.ND_N_SEXE='1','Masculin',IIf(ANAT_TABNUMERO_DOSSIER.ND_N_SEXE='2','Féminin','Non déterminé')) AS ND_N_SEXE, 
    ANAT_TABNUMERO_DOSSIER.ND_D_DATE_NAISS, 
    ANAT_TABNUMERO_DOSSIER.ND_T_IPUM, 
    ANAT_TABNUMERO_SIGMA.S_N_IDVENUE, 
    ANAT_TABNUMERO_SIGMA.S_T_SIGMA, 
    ANAT_TABPREALABLE_SPECIALITE.SPECIALITE_ID, 
    ANAT_TABPREALABLE_SPECIALITE.N_AGE, 
    ANAT_TABPREALABLE_SPECIALITE.D_DATE_EXAMEN, 
    ANAT_TABPREALABLE_SPECIALITE.T_NUM_EXAMEN, 
    ANAT_TABPREALABLE_SPECIALITE.T_DEMANDEUR, 
    ANAT_TABPREALABLE_SPECIALITE.T_NOM_DEMANDEUR, 
    ANAT_TABPREALABLE_SPECIALITE.T_ADR1, 
    ANAT_TABPREALABLE_SPECIALITE.T_ADR2, 
    ANAT_TABPREALABLE_SPECIALITE.T_CP, 
    ANAT_TABPREALABLE_SPECIALITE.T_VILLE, 
    ANAT_TABPREALABLE_SPECIALITE.T_EXAMEN_DIRECT, 
    ANAT_TABPREALABLE_SPECIALITE.T_RENS, 
    ANAT_TABPREALABLE_SPECIALITE.T_DENS_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_DENS_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_PHOTO_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_PHOTO_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_GOUTTES, 
    ANAT_TABPREALABLE_SPECIALITE.T_NOM_PHOTO_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_NOM_PHOTO_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_EXAMEN, 
    ANAT_TABPREALABLE_SPECIALITE.T_CONCLU, 
    ANAT_TABPREALABLE_SPECIALITE.T_COTATION, 
    ANAT_TABPREALABLE_SPECIALITE.T_PRN_DEMANDEUR, 
    ANAT_TABPREALABLE_SPECIALITE.T_EXAM_ANTERIEUR, 
    ANAT_TABPREALABLE_SPECIALITE.T_DS_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_DS_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_SURF_CM_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_SURF_CM_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_CV_OD, 
    ANAT_TABPREALABLE_SPECIALITE.T_CV_OG, 
    ANAT_TABPREALABLE_SPECIALITE.T_POLIT
    FROM ((ANAT_TABNUMERO_DOSSIER LEFT JOIN ANAT_TABNUMERO_SIGMA ON ANAT_TABNUMERO_DOSSIER.ND_N_IDPATIENT = ANAT_TABNUMERO_SIGMA.S_N_IDPATIENT) 
    LEFT JOIN (ANAT_TABSPECIALITE_VENUE LEFT JOIN ANAT_TABPREALABLE_SPECIALITE 
    ON ANAT_TABSPECIALITE_VENUE.SPECIALITE_ID = ANAT_TABPREALABLE_SPECIALITE.SPECIALITE_ID) 
    ON ANAT_TABNUMERO_SIGMA.S_N_IDVENUE = ANAT_TABSPECIALITE_VENUE.SV_N_IDVENUE) 
    LEFT JOIN ANAT_T_HOSPITALISE ON ANAT_TABPREALABLE_SPECIALITE.T_TYPE_HOSPI = ANAT_T_HOSPITALISE.T_CODE
    ORDER BY ANAT_TABNUMERO_DOSSIER.ND_N_IDPATIENT;

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 983
    Par défaut
    Bonjour,

    3 choses :
    - la table ANAT_T_HOSPITALISE n'est pas préfixée du nom du schéma comme les autres
    - utilisation des alias de tables serait plus confort et rationnel
    - quelle est la liste des colonnes de la table ANAT_T_HOSPITALISE ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Par défaut
    - la table ANAT_T_HOSPITALISE n'est pas préfixée du nom du schéma comme les autres
    si, elle l'est ??

    - utilisation des alias de tables serait plus confort et rationnel
    je travaille sur une vielle base de données que je n'ai pas conçu
    j'ai près de 1000 tables donc çà me parait pas envisageable

    - quelle est la liste des colonnes de la table ANAT_T_HOSPITALISE ?
    T_CODE (VARCHAR)
    T_LIBELLE (VARCHAR)
    N_RANG (Integer)

  6. #6
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Une bonne pratique est, quand tu as plusieurs tables dans le FROM, de préfixer CHAQUE table dans ton SELECT par le nom de son propriétaire, tu éviteras justement ce genre de message d'erreur que tu as.
    ATTENTION : c'est vrai pour la syntaxe propriétaire d'Oracle mais faux pour la syntaxe ANSI.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    JOIN USING et NATURAL JOIN : il ne faut pas mettre de nom de table devant les colonnes de la  jointure, même si elles font partie du SELECT. C'est donc l'inverse de la syntaxe propriétaire d'Oracle où on aura le message d'erreur problème de "colonne ambiguë" avec la syntaxe Oracle classique.
     
    Syntaxe propriétaire d'Oracle : il faut préfixer par un nom de table le nom des colonnes existantes dans les deux tables.
              SQL> select TABLE_NAME from dba_tables, dba_tab_privs where dba_tables.TABLE_NAME = dba_tab_privs.TABLE_NAME;
              Erreur SQL : ORA-00918: définition de colonne ambigu
              00918. 00000 -  "column ambiguously defined"
     
    Avec ANSI92, la colonne TABLE_NAME servant à la jointure doit être utilisée sans préfixe de table.
              SQL> select TABLE_NAME from dba_tables JOIN dba_tab_privs USING (TABLE_NAME);
              2 024 lignes sélectionnées
     
              SQL> select dba_tables.TABLE_NAME from dba_tables JOIN dba_tab_privs USING (TABLE_NAME);
              Erreur SQL : ORA-25154: la partie colonne de la clause USING ne peut pas avoir de qualificatif
              25154. 00000 -  "column part of USING clause cannot have qualifier"
              *Cause:    Columns that are used for a named-join (either a NATURAL join or a join with a USING clause) cannot have an explicit qualifier.
     
    Même problème avec NATURAL JOIN.
              SQL> select dba_tables.TABLE_NAME from dba_tables NATURAL JOIN dba_tab_privs;
              Erreur SQL : ORA-25155: la colonne utilisée dans la jointure NATURAL ne peut pas avoir de qualificatif
              25155. 00000 -  "column used in NATURAL join cannot have qualifier"
              *Cause:    Columns that are used for a named-join (either a NATURAL join or a join with a USING clause) cannot have an explicit qualifier.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Je dirais que le problème provient de la ligne #6, mon Oracle 7 est un peu rouillé mais cette fonction IIF ne me dit rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf(ANAT_TABNUMERO_DOSSIER.ND_N_SEXE='1','Masculin',IIf(ANAT_TABNUMERO_DOSSIER.ND_N_SEXE='2','Féminin','Non déterminé')) AS ND_N_SEXE
    Utilisez la fonction decode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    decode(ANAT_TABNUMERO_DOSSIER.ND_N_SEXE, '1', 'Masculin', '2', 'Féminin', 'Non déterminé')
    Si ND_N_SEXE est de type NUMBER, enlevez les apostrophes autour des '1' et '2'.


    Sinon testez simplement la partie jointure comme ceci, votre code est difficile à relire : utiliser des alias est un excellent conseil qu'il faut appliquer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        select *
          from ANAT_TABNUMERO_DOSSIER       dos
     left join ANAT_TABNUMERO_SIGMA         sig on sig.S_N_IDPATIENT = dos.ND_N_IDPATIENT
     left join ANAT_TABSPECIALITE_VENUE     ven on ven.SV_N_IDVENUE  = sig.S_N_IDVENUE
     left join ANAT_TABPREALABLE_SPECIALITE spe on spe.SPECIALITE_ID = ven.SPECIALITE_ID
     left join ANAT_T_HOSPITALISE           hos on hos.T_CODE        = spe.T_TYPE_HOSPI;

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Ah mais question bête... les jointures ANSI ne sont-elles pas arrivées en 8i ?

    C'est votre ACCESS qui fait correspondre des tables à Oracle ?

  9. #9
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 983
    Par défaut
    Bonjour,

    La syntaxe des jointures dans Access est ... particulière : les parenthèses sont obligatoires à partir de la 3ieme source (2ieme jointure).
    Graphiquement ça correspond à l'ordre d'ajout des tables dans le designer
    Logiquement ça permet à Access de traiter les jointures une par une, en suivant l'ordre des parenthèses ; Access est un RBO, pas de statistiques => dans l'ordre d'écriture. (du moins c'est la conclusion à laquelle je suis arrivé).

    Il vaut mieux laisser Access écrire la clause FROM !

    Dans le designer en faisant clic droit sur la table -> propriété -> Alias (de mémoire) permet de faire les alias de table "graphiquement".

    Je me pose la question :
    Le choix d'Access est fait :
    1- parce qu'il existe une application toute développée que vous cherchez à améliorer ?
    2- votre choix perso pour avoir une interface graphique pour faire les requêtes (atelier de développement) ?

  10. #10
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Par défaut
    je suis en stage et mon travail est d'exporter à plat les données d'une (très) vieille solution développée en VB6 et Access

  11. #11
    Membre Expert
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 983
    Par défaut
    Citation Envoyé par OZ1977 Voir le message
    mon travail est d'exporter à plat les données d'une (très) vieille solution développée en VB6 et Access
    Et Oracle dans tout ça ?

    Pour faire de l'export à plat :
    1- pas besoin de faire des OUTER JOIN (êtes vous sûr de votre besoin ???)
    2- on peut se connecter avec autre chose qu'Access (et du coup bénéficier de syntaxe plus propre)

  12. #12
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Par défaut
    Bonjour,

    je relance cette discussion car j'ai de nouveau le problème
    j'avais réussi à éviter le problème (en supprimant le group by) sans savoir pourquoi ni comment et bien sûr le problème reviens et je ne sis toujours pas comment le solutionner
    et là plus de group by...

    je travaille sous Access 97 car la solution a été développée à l'époque sous Access 97 et avec une base oracle 7
    je ne suis pas parvenu à connecter SQL developper, ni même TOAD à la base Oracle donc effectivement je développe mes requêtes sous Access pour produire une table d'export de données à plat

    pour des raisons de performance (temps d'exécution Access), je suis obligé de faire des sous requêtes pour arriver à ma table d'export finale
    aucun problème sur les première sous requête mais à la sous requête 6 je me retrouve à nouveau avec ce message Oracle "nom de colonne ambigue" or j'ai essayé ce que vous avez préconisé dans les messages de ce post mais sans succès

    en gros, je produis des tables temporaires et j'ajoute progressivement des données venant de tables différentes
    j'ai donc produit une table GENE_EXPORT_TAB5 que je souhaite lier à une table GENE_ISSUE sur l'IDBILAN
    le seul nom de colonne identique est donc IDBILAN mais il sont préfixés du nom de la table donc cela ne devrait pas poser problème
    j'ai essayé en changeant le nom IDBILAN en TAB5_IDBILAN dans ma table GENE_EXPORT_TAB5 mais çà ne change rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    SELECT GENE_ISSUE.IDBILAN, GENE_EXPORT_TAB5.IDPATIENT
    FROM GENE_EXPORT_TAB5 LEFT JOIN GENE_ISSUE ON GENE_EXPORT_TAB5.IDBILAN = GENE_ISSUE.IDBILAN;
    je désespère un peu
    d'avance merci pour votre aide

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 686
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 686
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Vu que les noms des tables sont à rallonge, il est beaucoup plus pratique de les remplacer par des alias et un peu de mise en forme facilite la lecture

    ainsi, plutôt que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT GENE_ISSUE.IDBILAN, GENE_EXPORT_TAB5.IDPATIENT
    FROM GENE_EXPORT_TAB5 LEFT JOIN GENE_ISSUE ON GENE_EXPORT_TAB5.IDBILAN = GENE_ISSUE.IDBILAN;
    Je préfère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT GI.IDBILAN
         , GE.IDPATIENT
    FROM  GENE_EXPORT_TAB5  as GE
    LEFT  JOIN 
          GENE_ISSUE        as GI
       ON GI.IDBILAN = GE.IDBILAN 
    ;
    Ensuite, ce petit bout de code, exécuté seul, fonctionne -t- il ?

Discussions similaires

  1. erreur : nom de colonne ambigu
    Par info3licen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/05/2011, 20h23
  2. Supprimer la colonne "Titre" dans les listes
    Par KL dans le forum SharePoint
    Réponses: 6
    Dernier message: 11/06/2009, 18h47
  3. probeleme des nom de colonnes ambigus dans une jointure
    Par devmassi dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 24/09/2008, 11h17
  4. [IBATIS] nom de colonne dynamique dans le mapping
    Par jgfa9 dans le forum Persistance des données
    Réponses: 1
    Dernier message: 02/01/2008, 15h01
  5. colonne affichée dans une liste déroulante
    Par Tierisa dans le forum Access
    Réponses: 4
    Dernier message: 13/10/2005, 17h13

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