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 :

[VB6-Access]Erreur de champ inconnu


Sujet :

Langage SQL

  1. #1
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut [VB6-Access]Erreur de champ inconnu
    Bonjour,

    Voici l'erreur que j'obtient :
    Champ Memo, OLE ou HyperLink Object incorrect dans la sous-requête 'NOM_PAYS'
    Lorsque j'exécute la requête SQL suivante :
    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
    49
    50
    SELECT 
        TA.ID_TRADUCTEUR, 
        TA.NOM_PRENOM, 
        PA.PRIX, 
        TA.SPECIALITE, 
        TA.ID_EMPLACEMENT 
    FROM 
        (
        SELECT 
            T.ID_TRADUCTEUR, 
            T.NOM_PRENOM, 
            P.PRIX, 
            T.SPECIALITE, 
            T.ID_EMPLACEMENT 
        FROM TRADUCTEUR T, 
            PRATIQUE P 
        WHERE P.ID_TRADUCTEUR=T.ID_TRADUCTEUR 
            AND T.NOM_PRENOM=P.NOM_PRENOM 
            AND P.ID_LANGUE=
            (
            SELECT 
                ID_LANGUE 
            FROM LANGUE 
            WHERE NOM_LANGUE='Anglais'
            )
        ) 
        TA, 
        PRATIQUE PA 
    WHERE PA.ID_TRADUCTEUR=TA.ID_TRADUCTEUR 
        AND PA.NOM_PRENOM=TA.NOM_PRENOM 
        AND PA.ID_LANGUE=
        (
        SELECT 
            ID_LANGUE 
        FROM LANGUE 
        WHERE NOM_LANGUE='Français'
        ) 
        AND TA.ID_EMPLACEMENT IN 
        (
        SELECT 
            ID_EMPLACEMENT 
        FROM EMPLACEMENT_GEOGRAPHIQUE E 
        WHERE E.NOM_PAYS IN 
            (
            SELECT 
                NOM_PAYS 
            FROM EMPLACEMENT_GEOGRAPHIQUE M 
            WHERE M.NOM_VILLE='Lens'
            )
        )
    Je dois bien avouer que je ne comprend pas du tout cette erreur, car je ne situe pas la "Sous-requête NOM_PAYS"

    Merci d'avance pour votre aide

    Ahmed

    PS : si ma question est débile, faites le moi savoir et donnez moi des pistes pour l'être moins, s'il vous plaît ^^

    PPS : Si la requête est imbuvable, c'est parceque je la fais en une seule ligne. Je ne sais pas où je pourrais revenir à la laigne pour que ce soit plus lisible.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Comprendre quelque chose d'illisible est difficile.
    Fait au moins l'effort d'indenter ton code et là tu t'apercevra ou se situe ton erreur !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut Re: [VB6-Access]Erreur de champ inconnu
    Pour l'indentation (et donc la lisibilité), ça m'a pris 2 mn :
    cf ce post (http://www.developpez.net/forums/viewtopic.php?t=32668), 4° message.

    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
    SELECT TA.ID_TRADUCTEUR,
           TA.NOM_PRENOM,
           PA.PRIX,
           TA.SPECIALITE,
           TA.ID_EMPLACEMENT
    FROM   (SELECT T.ID_TRADUCTEUR,
                   T.NOM_PRENOM,
                   P.PRIX,
                   T.SPECIALITE,
                   T.ID_EMPLACEMENT
            FROM   TRADUCTEUR T,
                   PRATIQUE P
            WHERE  P.ID_TRADUCTEUR = T.ID_TRADUCTEUR
                   AND T.NOM_PRENOM = P.NOM_PRENOM
                   AND P.ID_LANGUE = (SELECT ID_LANGUE
                                      FROM   LANGUE
                                      WHERE  NOM_LANGUE = 'Anglais')) TA,
           PRATIQUE PA
    WHERE  PA.ID_TRADUCTEUR = TA.ID_TRADUCTEUR
           AND PA.NOM_PRENOM = TA.NOM_PRENOM
           AND PA.ID_LANGUE = (SELECT ID_LANGUE
                               FROM   LANGUE
                               WHERE  NOM_LANGUE = 'Français')
           AND TA.ID_EMPLACEMENT IN (SELECT ID_EMPLACEMENT
                                     FROM   EMPLACEMENT_GEOGRAPHIQUE E
                                     WHERE  E.NOM_PAYS IN (SELECT NOM_PAYS
                                                           FROM   EMPLACEMENT_GEOGRAPHIQUE M
                                                           WHERE  M.NOM_VILLE = 'Lens'))
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  4. #4
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup d'avoir indenté ma requête. Je dois bien avouer que je ne l'avais pas fait car je ne savais vraiment pas où je pouvais couper.

    Merci encore.

    Je vais me pencher sur la requête, et si je trouve l'erreur je vous tiens au courant.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    D'autre part, j'ai jamais vu des requêtes aussi lamentables !!! J'espère que tu n'aura pas de données dans tes tables parce que avecs des IN aussi mal foutus ainsi que des produits cartésiens à la place des jointures....

    Ta requête devrait se simplifier à peu de chose près à :

    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
    SELECT T.ID_TRADUCTEUR, T.NOM_PRENOM, P.PRIX, T.SPECIALITE, T.ID_EMPLACEMENT 
     
    FROM   TRADUCTEUR T
     
           INNER JOIN PRATIQUE P 
                 ON     P.ID_TRADUCTEUR=T.ID_TRADUCTEUR 
                    AND T.NOM_PRENOM=P.NOM_PRENOM 
           INNER JOIN LANGUE L
                 ON P.ID_LANGUE = L.ID_LANGUE
     
           INNER JOIN PRATIQUE PA 
                 ON     PA.ID_TRADUCTEUR=T.ID_TRADUCTEUR 
                    AND PA.NOM_PRENOM=T.NOM_PRENOM
           INNER JOIN LANGUE L2
                 ON PA.ID_LANGUE = L2.ID_LANGUE
     
           INNER JOIN EMPLACEMENT_GEOGRAPHIQUE EG
                 ON TA.ID_EMPLACEMENT = EG.ID_EMPLACEMENT
     
    WHERE L.NOM_LANGUE='Anglais'
    AND   L2.NOM_LANGUE='Français'
    AND   M.NOM_VILLE='Lens'
    Moralité, il serait temps d'apprendre le langage SQL...
    Mon site SQLpro, comme mes bouquins peuvent t'y aider !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    dans le code de Xo, l'erreur est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    = (SELECT ID_LANGUE
                                      FROM   LANGUE
                                      WHERE  NOM_LANGUE = 'Anglais')) TA,
    ce devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IN (SELECT ID_LANGUE
                                      FROM   LANGUE
                                      WHERE  NOM_LANGUE = 'Anglais')) TA,
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Excusez-moi pour ma grande nullité, Ôh grand SQLPro.

    Il se trouve simplement que le SQL n'est pour moi qu'un moyen, et non une fin en soi.

    D'autres parts, je construit ma requête au fur et à mesure, et la construction se trouverais de beaucoup compliquée si j'utilisais des INNER JOIN.

    Enfin, la rapidité d'exécution n'est pas primordiale, mes tables étant assez légères.

    Cependant, merci de votre grande mansuétude, vous qui vous êtes abaissé à répondre au déchet que je suis.

    PS : Ca ne résoud de toutes façons pas mon problème. Je vais essayer de vous fournir les scripts de création des tables.

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Il se trouve simplement que le SQL n'est pour moi qu'un moyen, et non une fin en soi.
    On peut aussi utiliser des roues carrées sur une voiture et conduire sans permis...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  9. #9
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Ce que je voulais dire, c'est que même si ma requête est "lamentable", elle fonctionne, et me retourne ce que je veux. Si je raisonne par requêtes imbriquées, c'est parce que, comme je l'ai dit plus haut, je suis obligé de construire ma requête au fur et à mesure.

    En effet, il y a parfois des options que je suis obligé de prendre en compte.
    Et le faire avec des INNER JOIN m'aurait énormément compliqué la tâche en terme de code. Donc, au final, j'aurais perdu des performances.

    Bref, de toutes manières, ceci ne constitue en rien mon problème, qui réside dans le fait que j'ai un soit disant champ incorrect dans ma dernière sous-requête, et je dois bien avouer que je ne vois pas mon erreur.

    J'admet que je suis mauvais, et c'est JUSTEMENT pour ça que je suis venu demander de l'aide. Si j'étais assez intelligent et assez fort en SQL pour m'en sortir seul, je ne serais pas venu me faire insulter.

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Dire que vos requêtes sont lamentables ne constitue pas une insulte. Mesurez vos propos.

    de plus vous dites :
    je suis obligé de construire ma requête au fur et à mesure.
    Cela m'étonnerait fort qu'il vous soit impossible de la consruire avec des jointures... C'est beaucoup plus simple à élaborer, même lorque vous la construisez dynamiquement.

    Et le faire avec des INNER JOIN m'aurait énormément compliqué la tâche en terme de code. Donc, au final, j'aurais perdu des performances
    Et bien justement non, ce serait même le contraire.

    Bref, de toutes manières, ceci ne constitue en rien mon problème, qui réside dans le fait que j'ai un soit disant champ incorrect dans ma dernière sous-requête, et je dois bien avouer que je ne vois pas mon erreur.
    Je vous ais déjà répondu sur ce point. Avez vous essayé ? Sinon relisez l'un de mes posts.

    J'admet que je suis mauvais, et c'est JUSTEMENT pour ça que je suis venu demander de l'aide.
    Alors prenez le temps d'être meilleur, vous verrez que vous gagnerez en productivité... Comme celui qui a mis des roues carrées à sa voiture gagnera en rapidité et confort d'évolution en prenant des roues rondes.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  11. #11
    Xan
    Xan est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Merci d'avoir pris le temps de me répondre et pardonnez-moi pour tout à l'heure.

    J'ai trouvé où était l'erreur. (Par ailleurs, j'avais fait les rectifications que vous préconisiez aussitôt).

    En fait, je me suis tout simplement trompé de forum.

    Etant donné que la requête ne fonctionnait pas en VB, je l'ai entrée à la main sous Access, et j'ai découvert qu'une sous-requête ne pouvait retourner de champ de type Memo, ce que NOM_PAYS est, précisément.

    Aussi, je considère le problème comme résolu, étant donné que l'erreur ne venait pas vraiment de la synthaxe SQL...

    Merci d'avoir pris le temps de me répondre.

    Ahmed

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

Discussions similaires

  1. [VB6 - Access]Récupérer description des champs d'une table
    Par New dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/11/2014, 14h53
  2. Erreur #1054 champ .. inconnu on clause
    Par Fred92390 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/08/2010, 14h33
  3. [MySQL] message d'erreur sql : champ inconnu
    Par fredostar dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/05/2008, 03h06
  4. [VB6/ACCESS] Lister les champs d'une table
    Par Sytchev3 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 07/06/2006, 19h01
  5. [VB6-Access]Erreur de champ inconnu
    Par Xan dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/04/2006, 16h15

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