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

Requêtes et SQL. Discussion :

[Requête]Requête dans la clause FROM


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut [Requête]Requête dans la clause FROM
    Bonjour,

    Voilà mon problème: J'ai une première requête stockée dans une variable qui se nomme R_Union. Comme son nom l'indique c'est une requête Union. Je l'ai testée et je suis sure que celle-ci fonctionne.

    Cette requête dois me servir dans la clause from d'une seconde requête stockée dans la variable sql.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql="SELECT * FROM (" & R_Union & ") WHERE id=5"
    Le problème est qu'un message d'erreur s'affiche m'indiquant :
    "Le paramètre de cette requête est trop long".

    Quelqu'un aurait-il une idée pour m'aider à résoudre ou à contourner le problème?

    Ceuce

  2. #2
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sql="SELECT * FROM (" & R_Union & ") WHERE id=5"
    Debug.Print sql
    Tu auras alors le côde SQL généré et tu pourras le tester dans le requêteur Access.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    Le souci c'est que le message d'erreur intervient au moment de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql="SELECT * FROM (" & R_Union & ") WHERE id=5"
    donc je ne peux pas utiliser debug.print.

  4. #4
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Est ce qu'on peut voir en détail R_Union ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    Si tu veux mais c'est assez énorme...
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    sql = "SELECT [tableA].N°, [tableA].code, 'nom1' AS nom"
    sql = sql & " FROM tableA"
    sql = sql & " WHERE ((([tableA].code ) = 'A01' )) Union"
     
    sql = sql & " SELECT [tableA].N°, [tableA].code, 'nom2' AS nom"
    sql = sql & " FROM tableA"
    sql = sql & " WHERE ((([tableA].code ) = 'M01' )) Union"
     
    sql = sql & " SELECT [tableA].N°, [tableA].code, 'nom3' AS nom"
    sql = sql & " FROM tableA"
    sql = sql & " WHERE ((([tableA].code ) = 'P01' ))Union"
     
    sql = sql & " SELECT tableB.N°, tableB.code, 'nom4' AS nom"
    sql = sql & " FROM tableBUnion"
     
    sql = sql & " SELECT tableC.N°, tableC.code, 'nom5' AS nom"
    sql = sql & " FROM tableCUnion"
     
    sql = sql & " SELECT tableD.N°, tableD.code, 'nom6' AS nom"
    sql = sql & " FROM tableD Union"
     
    sql = sql & " SELECT tableE.N°, tableE.code, 'nom7' AS nom"
    sql = sql & " FROM tableE Union"
     
    sql = sql & " SELECT tableF.N°, tableF.code, 'nom8' AS nom"
    sql = sql & " FROM tableF Union"
     
    sql = sql & " SELECT tableG.N°, tableG.code , 'nom9' AS nom"
    sql = sql & " FROM tableG"
    sql = sql & " WHERE (((tableG.code ) = 'B03'  ))Union"
     
    sql = sql & " SELECT tableG.N°, tableG.code , 'nom10' AS nom"
    sql = sql & " FROM tableG"
    sql = sql & " WHERE (((tableG.code ) = 'B04'  ))Union"
     
    sql = sql & " SELECT tableG.N°, tableG.code , 'nom11' AS nom"
    sql = sql & " FROM tableG"
    sql = sql & " WHERE (((tableG.code ) = 'B05'  )) Union"
     
    sql = sql & " SELECT tableH.N°, tableH.code , 'nom12' AS nom"
    sql = sql & " FROM tableH"
    sql = sql & " WHERE (((tableH.code ) = 'A02'  ))Union"
     
    sql = sql & " SELECT tableH.N°, tableH.code , 'nom13' AS nom"
    sql = sql & " FROM tableH"
    sql = sql & " WHERE (((tableH.code ) = 'A03'  ))Union"
     
    sql = sql & " SELECT tableH.N°, tableH.code , 'nom14' AS nom"
    sql = sql & " FROM tableH"
    sql = sql & " WHERE (((tableH.code ) = 'A04'  ))Union"
     
    sql = sql & " SELECT tableH.N°, tableH.code , 'nom15'  AS nom"
    sql = sql & " FROM tableH"
    sql = sql & " WHERE (((tableH.code ) = 'A05'  ))Union"
     
    sql = sql & " SELECT tableH.N°, tableH.code , 'nom16' AS nom"
    sql = sql & " FROM tableH"
    sql = sql & " WHERE (((tableH.code ) = 'A06'  ))Union"
     
    sql = sql & " SELECT tableH.N°, tableH.code , 'nom17'  AS nom"
    sql = sql & " FROM tableH"
    sql = sql & " WHERE (((tableH.code ) = 'A07'  ))Union"
     
    sql = sql & " SELECT tableH.N°, tableH.code , 'nom18' AS nom"
    sql = sql & " FROM tableH"
    sql = sql & " WHERE (((tableH.code ) = 'A08'  ))Union"
     
    sql = sql & " SELECT tableH.N°, tableH.code , 'nom19' AS nom"
    sql = sql & " FROM tableH"
    sql = sql & " WHERE (((tableH.code ) = 'A09'  ))Union"
     
    sql = sql & " SELECT tableH.N°, tableH.code , 'nom20'  AS nom"
    sql = sql & " FROM tableH"
    sql = sql & " WHERE (((tableH.code )='A10'  ));"
    par contre désolée pour le peu d'explicité des noms des tables et des variables, mais je pense que la logique doit te suffire, en tous cas merci.

    Ceuce

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    J'ai oublier de préciser, mais du coup la première requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql="SELECT * FROM (" & R_Union & ") WHERE id=5"
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chaine="SELECT * FROM (" & R_Union & ") WHERE N°=5"
    Voilà...

    ceuce

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    Personne n'aurait une idée sur le pourquoi de mon problème?
    C'est assez important pour moi, et en plus ça m'intéresserait vraiment de comprendre..., là je suis bloquée

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Comment as tu déclaré R_Union?

    fais un Debug.Print R_Union pour voir s'il est correct.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    En fait, R_Union=sql, c'est un string.

    La méthode debug.print ne m'aide pas vraiment, ça ne fait que réécrire la requête dans la fenêtre d'exécution. Mais j'ai testé cette requête à part et je sais qu'elle est correcte. Exécutée dans access via le tableau de création de requête cela me donne bien mon tableau.
    Le problème vient certainement du fait que cette requête soit insérée dans la clause FROM de la seconde requête, or, je ne vois pas comment faire autrement pour exploiter les résultats de ma première requête...

    Ceuce

  10. #10
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    1) Apparemment le nombre de caractères qui contituent ta variable R_Reunion dépasse la taille maximale autorisée. Essaye de décomposer en plusieurs variables pour aboutir à une requête de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql="SELECT * FROM (" & R_Union1 & " " & R_Union2 & ...) WHERE id=5"
    2) Tu crées dans la base une requête V_Reunion qui sera composée de la réunion des requêtes utilisées et ce pour avoir dans ton programme quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql="SELECT * FROM  V_Union  WHERE id=5"
    LA deuxième méthode est plus simple et plus pratique.

    Douce nuit !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 126
    Points : 53
    Points
    53
    Par défaut
    Merci monsieur Le Pharaon, je vais effectivament me servir de la deuxième méthode. J'y avais pensé mais je ne voulais pas de requête permanente pour ça dans ma base, enfin tant pis...

    Merci pour votre aide

    ceuce

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2014, 13h35
  2. [11g] Sous-requête dans la clause FROM
    Par FANDENEGI dans le forum SQL
    Réponses: 6
    Dernier message: 20/02/2014, 13h50
  3. Requêter 2 schémas sans préfixe dans la clause FROM
    Par buchette dans le forum Débuter
    Réponses: 4
    Dernier message: 18/04/2008, 16h50
  4. Requête sql dans une clause Where
    Par PrinceMaster77 dans le forum Requêtes
    Réponses: 5
    Dernier message: 26/07/2006, 11h30
  5. Réponses: 2
    Dernier message: 03/06/2006, 00h22

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