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 :

requête avec SELECT imbriqués...


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Points : 38
    Points
    38
    Par défaut requête avec SELECT imbriqués...
    Bonjour :

    J'ai des problèmes avec cette requête:

    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
    SELECT LibelQuest,TestQuest,MessTest,LibelDoc,ChemDoc
     
    FROM
     
    (SELECT *
    FROM Questions q, QuestDom qdom, Domaines dom
    WHERE (dom.LibelDom = "VIE CONVENTIONNELLE") AND (dom.NumDom = qdom.NumDom) AND (qdom.NumQuest = q.NumQuest)) t1
     
    LEFT OUTER JOIN
     
    (SELECT *
    FROM QuestDoc qdoc, Documents doc
    WHERE (qdoc.NumDoc = doc.NumDoc)) t2
     
    ON (t1.NumQuest = t2.NumQuest)
    Les 2 "Select *" marchent très bien séparément, mais lorsque je réalise la jointure externe, j'obtiens une erreur (sous Access, mais j'imagine que ça me ferait pareil ailleurs...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur de syntaxe dans la clause FROM.
    Qqn a une idée ?

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonsoir,

    Tu fais des select * dans tes s-requêtes, ce qui fait que tu as plusieurs fois t1.numquest et t2.numdoc par exemple, donc il y a ambiguite sur lequel utiliser dans ta jointure ON (t1.NumQuest = t2.NumQuest).

    A +

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    C'était bien vu, mais j'ai eu beau modifier en :
    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
     
    SELECT LibelQuest,TestQuest,MessTest,LibelDoc,ChemDoc
     
    FROM
     
    (SELECT q.NumQuest, q.LibelQuest, q.TestQuest, q.MessTest
    FROM Questions q, QuestDom qdom, Domaines dom
    WHERE (dom.LibelDom = "VIE CONVENTIONNELLE") AND (dom.NumDom = qdom.NumDom) AND (qdom.NumQuest = q.NumQuest)) t1
     
    LEFT OUTER JOIN
     
    (SELECT qdoc.NumQuest, doc.LibelDoc, doc.ChemDoc
    FROM QuestDoc qdoc, Documents doc
    WHERE (qdoc.NumDoc = doc.NumDoc)) t2
     
    ON (t1.NumQuest = t2.NumQuest)
    Eh ben, ça marche toujours pas : même message d'erreur...

    Alors je me suis dit que c'était p-ê dû aux alias t1 et t2, j'ai donc tenté :

    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
    SELECT LibelQuest,TestQuest,MessTest,LibelDoc,ChemDoc
     
    FROM
     
    (SELECT q.NumQuest AS n1, q.LibelQuest, q.TestQuest, q.MessTest
    FROM Questions q, QuestDom qdom, Domaines dom
    WHERE (dom.LibelDom = "VIE CONVENTIONNELLE") AND (dom.NumDom = qdom.NumDom) AND (qdom.NumQuest = q.NumQuest))
     
    LEFT JOIN
     
    (SELECT qdoc.NumQuest AS n2, doc.LibelDoc, doc.ChemDoc
    FROM QuestDoc qdoc, Documents doc
    WHERE (qdoc.NumDoc = doc.NumDoc))
     
    ON (n1 = n2)
    Mais ça marche pas non plus...

    Merci quand même.

  4. #4
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,
    Là je sèche!Normalement ta 1ere rq devrait fonctionner.
    C'est quoi ton moteur ?
    J'ai fait ça avec Access (dsl, ma v° d'oracle ne supporte pas les jointures normées) et elle s'exécute correctement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT LibelQuest, TestQuest, MessTest, LibelDoc, ChemDoc
    FROM 
    (SELECT q.NumQuest, q.LibelQuest, q.TestQuest, q.MessTest 
    FROM Questions q, QuestDom qdom, Domaines dom 
    WHERE dom.LibelDom = "VIE CONVENTIONNELLE" 
    AND dom.NumDom = qdom.NumDom 
    AND qdom.NumQuest = q.NumQuest) as t1 
    LEFT OUTER JOIN 
    (SELECT qdoc.NumQuest, doc.LibelDoc, doc.ChemDoc 
    FROM QuestDoc qdoc, Documents doc 
    WHERE qdoc.NumDoc = doc.NumDoc) as t2 
    ON t1.NumQuest = t2.NumQuest;
    PS: La seconde fonctionne aussi si je rajoute '[...]as t1 et [...]as T2 et que je modifie la jointure en 'on t1.n1 = t2.n2';

    A +

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Points : 38
    Points
    38
    Par défaut
    Re aussi,
    Je suis sous Access97, j'ai fait un copier-coller du code que tu as mis, et ça me fait toujours la même erreur.
    Si ça marche chez toi sous access, ça doit venir de mon install qui est foireuse ou de ma version qui est trop vieille.

    Bref, je te remercie encore beaucoup pour tes réponses, et je vais explorer d'autres pistes pour que ça marche.

    ++

Discussions similaires

  1. Requête avec select imbriqué
    Par Isiker dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/08/2010, 17h45
  2. Requête avec select max sur 3 tables
    Par Tintinduweb dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/03/2010, 05h49
  3. [MySQL] Optimisation requête avec SELECT COUNT
    Par przvl dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/10/2008, 15h27
  4. Requête avec select multiple
    Par dams580 dans le forum Requêtes
    Réponses: 7
    Dernier message: 09/10/2007, 11h52
  5. Requête et sous requête avec SELECT et UPDATE
    Par Véronique75ca dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/06/2006, 21h25

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