Version complète: sur le forum Webmaster Hub : analyseur de requête sql
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
stone
Bonjour à tous smile.gif

Je cherche un script qui me permet d'analyser une requête sql de type select : Les champs & les tables à sélectionner.
Quelqu'un à déjà trouvé un script pareil ?
merci.
MS-DOS_1991
CITATION(stone @ mardi 30 mai 2006, 12h02) *
Bonjour à tous smile.gif

Je cherche un script qui me permet d'analyser une requête sql de type select : Les champs & les tables à sélectionner.
Quelqu'un à déjà trouvé un script pareil ?
merci.

Euh... la requête EXPLAIN par exemple ?
stone
CITATION(MS-DOS_1991 @ mardi 30 mai 2006, 12h10) *
Euh... la requête EXPLAIN par exemple ?


Merci pour ta réponse smile.gif

J'ai déjà trouvé ça, mais c'est apparemment pas standard : http://docs.postgresqlfr.org/8.0/sql-explain.html

CITATION
Compatibilité

Il n'existe pas d'instruction EXPLAIN définie dans le standard SQL.



je souhaite avoir une solution indépendante du sgbd. blush.gif
Spidetra
CITATION(stone @ mardi 30 mai 2006, 12h40) *
je souhaite avoir une solution indépendante du sgbd. blush.gif


Les optimisations de requête dépendent de la manière dont le SGBD implémente la norme SQL.
A ma connaissance tout les optimiseurs de requêtes sont liés à un SGBD cible.
stone
CITATION(Spidetra @ mardi 30 mai 2006, 12h50) *
Les optimisations de requête dépendent de la manière dont le SGBD implémente la norme SQL.
A ma connaissance tout les optimiseurs de requêtes sont liés à un SGBD cible.


C'est pour éviter les instructions propriétaires que je veux passer par un script php qui utiliserait peut-être des expressions régulières !! blush.gif
Spidetra
CITATION(stone @ mardi 30 mai 2006, 13h07) *
C'est pour éviter les instructions propriétaires que je veux passer par un script php qui utiliserait peut-être des expressions régulières !! blush.gif


Qu'est-ce que tu cherches à faire exactement ??
stone
CITATION(Spidetra @ mardi 30 mai 2006, 13h10) *
Qu'est-ce que tu cherches à faire exactement ??


Récupérer les tables sélectionnées et les champs sélectionnés pour chaque table smile.gif
Spidetra
Tu aurais un SELECT du style :
SQL
SELECT field1, field2, field3
FROM foo f LEFT OUTER JOIN bar b on f.id = b.id_foo
WHERE f.id > 45
ORDER BY field1 desc


tu voudrais que ton script te retourne :
- field1, field2, field 3 : pour les champs
- foo, bar : pour les tables

C'est ça ?
stone
oui c'est bien ça
Spidetra
Si je devais faire un truc de ce style :

1. Je chercherai à savoir s'il existe des parser SQL : Parser SQL. Le premier résultat est un parser en Perl.
Je ne sais pas s'il y en a en Php

2. Une fois que ta requête est parsée et que tu as tes champs et tes table.
Tu veux savoir à quelle table appartient tel champ.

Je ne sais pas s'il existe un langage générique de requêtage d'un serveur SGBD.
Généralement, tu connais la structure des tables systèmes de ton SGBD, et tu fait des requêtes spécifiques sur ces tables.
Tu retombe dans des syntaxes qui seront dépendantes de ton SGBD.
Les tables systèmes de mySQL sont différentes de postGresql qui sont différentes de MSSQL qui sont différentes d'Oracle ....

C'est ce genre de parser que tu cherche. Mais celui-là est en java :
http://www.experlog.com/gibello/zql/

En Php tu as ça, mais il a pas l'air très actif :
http://sourceforge.net/projects/osqlp/
stone
Merci beaucoup pour ton aide je vais voir ce que je peux faire avec les différentes solutions proposées.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.