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

Langage SQL Discussion :

Débutant : Définition de colonne ambigüe


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut Débutant : Définition de colonne ambigüe
    Bonjour, je suis donc débutant en SQL, et ma question va sans doute sembler très bête aux pros, mais bon comme il faut bien commencer un jour, et que je suis bloqué faute de connaissance...

    Je bose avec le logiciel PL/SQL développeur.
    Je souhaite faire une ptite requête de sélection dans une table, je commence ma requête comme suit :

    select SIRET, TAUXMARGEBRUTE, FRAISPERSONNELSURVALEURAJOUTEE from bilan t

    Jusque là pas de soucis pour moi, par contre pour la suite je bloque sur le faite que je veux lui demander de m'afficher les lignes correspondantes à différentes données d'une même colonne.
    En pratique je veux lui demander de sélectionner les lignes de la colonne "SIRET" qui ont certains numéros de codes.

    Quand je le fais pour un seul en tapant : where SIRET = 'FR09301162095'
    ça marche bien... mais impossible de mettre plus d'un code (j'ai plusieurs code différents commencant par FR09...).

    Pourriez vous me dire, m'expliquer quelle syntaxe utiliser pour mettre les différents code à la suite (virgule ? point virgule ? guilmet... autre ?) ?

    Merci par avance pour le coup de main !

  2. #2
    Membre régulier Avatar de royto
    Homme Profil pro
    Développeur .Net & Web
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .Net & Web

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Points : 96
    Points
    96
    Par défaut
    Il faut utiliser le in avec la liste des valeurs admises

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where SIRET in  ('FR09301162095', 'FR093011620453', ...)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    aaaah yessssss ça marche !!

    Merci Royto !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut Débutant : definition de colonne ambigu
    Mon 1er soucis a été résolu, mais en continuant a construire ma requête me voila avec un 2nd problème.

    J'ai besoin d'aller chercher dans une seconde Table, une colonne (Dénomination). voilà mon code actuel :

    select SIRET, TAUXMARGEBRUTE, NOTE_TOTALE, FRAISPERSONNELSURVALEURAJOUTEE, DENOMINATION from bilan t, societesxx t
    where SIRET in ('FR09577350424', 'FR09331878421', 'FR09428627376', 'FR09310456413', 'FR09007250186')


    réponse du logiciel : "Définition de colonne ambigu"

    J'ai vérifié, a priori la seule colonne en commun entre les 2 tables serait "siret", alors comment modifier ma requête pour qu'elle fonctionne ??

    Merci d'avance...

  5. #5
    Membre régulier Avatar de royto
    Homme Profil pro
    Développeur .Net & Web
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .Net & Web

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Points : 96
    Points
    96
    Par défaut
    en fait il ne sait pas sur quelle table tu veux utiliser ta colonne SIRET qui existe dans tes tables bilan et societesxx

    il faut donc que tu prefixe la colonne avec le nom de la table ou son alias soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select b.SIRET, TAUXMARGEBRUTE, NOTE_TOTALE, FRAISPERSONNELSURVALEURAJOUTEE, DENOMINATION 
    from bilan b, societesxx s
    where b.SIRET in ('FR09577350424', 'FR09331878421', 'FR09428627376', 'FR09310456413', 'FR09007250186')
    dans ta clause from la lettre apres le nom de la table est son alias qui te permet de définir la table auxquelles appartient la colonne

    from bilan b ==> b.SIRET

    Le mieux est de le faire pour toutes les colonnes, c'est plus propres et ca évite des erreurs de ce type

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Citation Envoyé par royto
    Le mieux est de le faire pour toutes les colonnes, c'est plus propres et ca évite des erreurs de ce type
    Et quand tu as des requêtes qui font appel à plus d'une table, qualifier les colonnes (ajouter l'alias devant leur nom) te permet aussi de savoir facilement d'où viennent les données sans avoir à rechercher la définition de chaque table...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par royto
    en fait il ne sait pas sur quelle table tu veux utiliser ta colonne SIRET qui existe dans tes tables bilan et societesxx

    il faut donc que tu prefixe la colonne avec le nom de la table ou son alias soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select b.SIRET, TAUXMARGEBRUTE, NOTE_TOTALE, FRAISPERSONNELSURVALEURAJOUTEE, DENOMINATION 
    from bilan b, societesxx s
    where b.SIRET in ('FR09577350424', 'FR09331878421', 'FR09428627376', 'FR09310456413', 'FR09007250186')
    dans ta clause from la lettre apres le nom de la table est son alias qui te permet de définir la table auxquelles appartient la colonne

    from bilan b ==> b.SIRET

    Le mieux est de le faire pour toutes les colonnes, c'est plus propres et ca évite des erreurs de ce type
    Je viens de tenter l'expérience avec ton code... la bonne nouvelle c'est que je n'ai plus le message pour la colonne ambigue, la mauvaise c'est que ça ne me donne pas ce que je veux, pire ça bug égèrement. Je t'explique ce que, en théorie j'espère de ma requête :

    1) sachant que mon critère de sélection est le champ "siret" qui est aussi ma clé unique dans les deux tables que j'ouvre
    2) Elle doit aller prendre dans ma table "bilan" les champs SIRET, TAUXMARGEBRUTE, NOTE_TOTALE, FRAISPERSONNELSURVALEURAJOUTEE
    3) elle doit aller prendre dans la table "societexx" le champ DENOMINATION
    4)elle doit en conclusion m'afficher 1 siret et donc une dénomination différente sur chaque ligne.

    J'ai 47 SIRET Dans ma requête, donc je devrais avoir 47 lignes.
    Sauf que là, ma requête me sort 47 lignes avec une dénomination qui n'a rien à voir avec mes sirets, puis 47 autres lignes avec une autre dénomination fantaisiste, et encore 47 autres, et encore.. là j'ai arrêter la requête parce que j'étais à 94900 lignes

    Voilà où j'en suis... donc un peu noyé !
    merci pour le complément d'aide que je pourrais avoir !

  8. #8
    Membre régulier Avatar de royto
    Homme Profil pro
    Développeur .Net & Web
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .Net & Web

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Points : 96
    Points
    96
    Par défaut
    il faut faire un jointure entre tes 2 tables ==> pour ca rajoute dans la clause where la condition
    Comme ca tu recuperes les informations que quand les 2 colonnes sont égales.

    Sinon tu auras pour résultat le nombre de ligne de la table bilan x le nombre de ligne de la table societesxx

    ==> Au final ta requete devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select b.SIRET, TAUXMARGEBRUTE, NOTE_TOTALE, FRAISPERSONNELSURVALEURAJOUTEE, DENOMINATION 
    from bilan b, societesxx s
    where b.SIRET in ('FR09577350424', 'FR09331878421', 'FR09428627376', 'FR09310456413', 'FR09007250186') 
    and b.SIRET = s.SIRET

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    Oui cette fois c'est bon, c'est génial !!!

    Merci pour ta patience et pour ton aide Royto !

  10. #10
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    ça ma servit dans le B.I QlikView ^^..
    Merci (y)
    On essaie
    et ça marchera

    Mon site
    Ma page

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

Discussions similaires

  1. [8] ORA-00918 : définition de colonne ambigüe
    Par sasaif dans le forum SQL
    Réponses: 8
    Dernier message: 23/12/2013, 16h16
  2. Définition de colonne ambigüe
    Par lola06 dans le forum SQL
    Réponses: 26
    Dernier message: 06/07/2012, 15h41
  3. Message d'erreur "Définition de colonne ambigüe"
    Par eemii dans le forum Bases de données
    Réponses: 3
    Dernier message: 02/06/2008, 01h06
  4. [Débutant] Définition
    Par errant dans le forum Langage
    Réponses: 11
    Dernier message: 19/04/2006, 16h05
  5. [débutant] nombre de colonne dan sun fichier csv
    Par mandagor dans le forum C++
    Réponses: 18
    Dernier message: 15/06/2005, 15h42

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