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 MySQL Discussion :

syntaxe des tables dérivées


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué Avatar de schkrumble
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Points : 130
    Points
    130
    Par défaut syntaxe des tables dérivées
    J'ai un problème de syntaxe assez currieux quand j'attaque une base de donnée de prod, alors que le même problème ne se pose pas tant je travaille en local sur une base répliquée que je fais tourner sous une version plus récente de MySQL

    Pour simplifier le problème, suposons que j'ai dans ma base trois tables (table1, table2, table3) avec un champ à chaque fois (ID1, ID2, ID3).
    Pour une raison que je ne vous expliquerai pas, je dois définir une table dérivée (une sous-requête) avec une jointure entre table1 et table2 puis faire une jointure entre le résultat de ma requête et la table3.

    2 syntaxes possibles (le terme "blablabla" remplace la définition de ma table dérivée, à laquelle j'ai donné le nom de sousrequete) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT
       sousrequete.ID1,
       table3.ID3
    FROM
       table3 INNER JOIN (blablabla) sousrequete ON (sousrequete.ID2 = table3.ID3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT
       sousrequete.ID1,
       table3.ID3
    FROM
       (blablabla) sousrequete INNER JOIN table3 ON (sousrequete.ID2 = table3.ID3)
    Quand je fait tourner les deux requêtes sous MySQL 5.0.37, elles me renvoient le même résultat, ce qui semble normal !

    Par contre, sous MySQL 4.1.13, seule la première fonctionne. La seconde me renvoie ce message d'erreur :

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sousrequete INNER JOIN table3 ON (sousrequete.ID2 = table3.ID3)' at line 5
    Etonnant, non ?

    Si je n'avais qu'une seule table dérivée, je pourrait résoudre le problème en la mettant systématiquement comme deuxième élément de ma jointure, mais, en vrai, j'ai plusieurs table dérivées...

    Quelqu'un a une idée ?

  2. #2
    Membre habitué Avatar de schkrumble
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Points : 130
    Points
    130
    Par défaut
    Grâce à vos nombreuses remarques , j'ai réussi à circonscrire un peu mieux le problème.

    En fait la requête qui pose problème n'est pas exactement celle indiquée dans mon premier post mais plutôt celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT
       sousrequete.ID1,
       table3.ID3
    FROM
       ((blablabla) sousrequete INNER JOIN table3 ON (sousrequete.ID2 = table3.ID3))
    Vous apprécierez la nuance... ça saute aux yeux, non ?

    Tout ce qui suit le FROM est encadré dans une grande parenthèse (superflue, certes, mais en principe pas gênante).
    C'est le fait de commencer le FROM par une double parenthèse qui semble perturber MySQL.

    J'ai donc provisoirement résolu mon problème en effaçant manuellement les parenthèses superflues.
    Mais la plupart des requête générées automatiquement par un requêteur (BO) vont comporter ces doubles parenthèses et risquent donc de planter sous MySQL 4.1.13...

Discussions similaires

  1. Support des tables dérivées
    Par qi130 dans le forum Installation
    Réponses: 2
    Dernier message: 24/12/2009, 14h59
  2. syntaxe des tables interne
    Par lbrnoss dans le forum SAP
    Réponses: 12
    Dernier message: 30/04/2009, 21h54
  3. [syntaxe]Creation table avec nom dynamique
    Par ZuZu dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 23/09/2004, 18h01
  4. Liste des tables d'une bases de données spécifique
    Par faridos23 dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/08/2003, 22h20
  5. noms des tables d'une base
    Par molto dans le forum SQL
    Réponses: 2
    Dernier message: 17/03/2003, 22h14

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