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 :

Erreur Where clause


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    ?
    Inscrit en
    Décembre 2016
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : ?
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2016
    Messages : 68
    Points : 48
    Points
    48
    Par défaut Erreur Where clause
    Bonjour
    quelqu'un peut-il m'expliquer d'ou vient cette erreur Were clause dans cette requet.
    #1054 - Champ 'author_adv' inconnu dans where clause
    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
     
    SELECT book.support AS support,
                            author.title AS author_adv,
                            book.nglibrary_book_id AS nglibrary_book_id,
                            book.cover AS cover,
                            book.title AS title,
                            book.subtitle AS subtitle, 
                            book.coll5 AS coll5, 
                            book.resume AS resume, 
                            book.author_p AS author_p,
                            book.coll7 AS coll7, 
                            book.coll6 AS coll6,
                            book.collection AS collection, 
                            book.serie AS serie,  
                            book.support AS support, 
                            book.isbn AS isbn, 
                            book.year AS year, 
                            book.genre AS genre, 
                            book.public AS public,
                            book.grp_public AS grp_public, 
                            book.created_on AS book_created_on,
                            book.grp_genre AS grp_genre, 
                            book.status_bib AS status_bib, 
                            book.periodique AS periodique, 
                            book.hits AS hits
     
      FROM nr3zk_nglibrary_books AS book
     
      LEFT JOIN nr3zk_nglibrary_books_authors AS link_author 
      ON book.nglibrary_book_id = link_author.nglibrary_book_id
     
      LEFT JOIN nr3zk_nglibrary_authors AS author 
      ON author.nglibrary_author_id = link_author.nglibrary_author_id
     
      WHERE (`author_adv` LIKE '%herge%')
    pour info si je remplace author_adv par `author`.`title` cela fonctionne

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu ne peux pas utiliser un alias dans la clause WHERE, sauf s'il provient d'une sous-requête, tout simplement.

    Tatayo.

  3. #3
    Membre du Club
    Homme Profil pro
    ?
    Inscrit en
    Décembre 2016
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : ?
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2016
    Messages : 68
    Points : 48
    Points
    48
    Par défaut
    et puis qu'on y est j'ai aussi cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND ((`periodique` = "1" ) OR (`periodique` IS NULL ))
    1052 Champ: 'periodique' dans where clause est ambigu

  4. #4
    Membre du Club
    Homme Profil pro
    ?
    Inscrit en
    Décembre 2016
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : ?
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2016
    Messages : 68
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Tu ne peux pas utiliser un alias dans la clause WHERE, sauf s'il provient d'une sous-requête, tout simplement.

    Tatayo.
    qu'entend tu par sous requete ?
    Mince donc ici je ne peut l'utilisé que sur book. et pas sur les autres copie. author. editor.
    C'est bien cela ?

  5. #5
    Membre du Club
    Homme Profil pro
    ?
    Inscrit en
    Décembre 2016
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : ?
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2016
    Messages : 68
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Slushgood Voir le message
    a mince donc ici je ne peut l'utilisé que sur book. et pas sur les autres copie. author. editor.
    C'est bien cela ?
    et bien non même pas puisqu'avec book.periodique cela fonctionne

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    "book.periodique" n'est pas un alias, mais bien une colonne, donc ça fonctionne.
    "periodique" est à la fois un alias, et la colonne périodique de la table book. Il y a donc ambigüité, le moteur ne sait pas trop quoi prendre.
    Si tu supprimes l'alias dans la requête, tu peux mettre directement periodique dans la clause WHERE. Cette colonne n'est (visiblement) définie que dans la table book, le moteur va faire le lien entre la colonne et sa table, et tout fonctionne.

    Par contre si tu as un alias qui ne correspond à aucun nom de colonne des tables mises en jeu, tu auras l'erreur de ton premier message.

    Qu'est-ce que j'entends pas une sous-requête ? Bha une sous-requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select monalias
    from (
    select col1 as monalias
    from matable
    ) where monalias = ''
    Là je peux utiliser l'alias Monalias, car il est vu comme une colonne de la sous-requête. Alors que dans la sous-requête je ne peux pas l'utiliser, je dois prendre col1.
    Donc si je modifie ma requête ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select monalias
    from (
    select col1 as monalias
    from matable
    where monalias = ''
    )
    Ca ne fonctionne plus.

    Donc pour conclure:
    • Tu ne peux pas utiliser un alias dans la clause FROM
    • Si tu as un alias et une colonne qui ont le même nom, il faut préfixer la colonne avec le nom de la table, pour lever toute ambigüité
    • Il faut toujours préfixer les colonnes avec les noms des tables. La requête est plus clair, et si tu ajoutes une colonne avec le même nom dans une autre table de la requête, elle ne passe plus


    Tatayo.

  7. #7
    Membre du Club
    Homme Profil pro
    ?
    Inscrit en
    Décembre 2016
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : ?
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2016
    Messages : 68
    Points : 48
    Points
    48
    Par défaut
    Milles merci pour toutes ces explications

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

Discussions similaires

  1. Erreur requête : clause WHERE mal utilisée
    Par anxious dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/03/2010, 02h35
  2. erreur : #1054 - Unknown column 'Martin' in 'where clause'
    Par éric1 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2009, 15h29
  3. [MySQL] erreur champ ' ' inconnu dans where clause
    Par j2eejsp dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 29/01/2009, 00h28
  4. Réponses: 2
    Dernier message: 01/01/2009, 20h52
  5. Réponses: 4
    Dernier message: 07/08/2008, 13h31

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