PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 06/05/2009 16:39:47

fetter77
Membre

Syntaxe des Requetes SQL

Bonjour,

Je développe une application sous windows ou l'on peut choisir son SGBD.

Sous Acess, MySql je n' ai pas de problème, mais par contre sous Postgre j'ai des erreurs de requêtes du genre pour les SELECT, je dois spécifier le nom de la base et mettre le nom des attributs entre " ".

Donc je dois écrire
SELECT "nom_attribut" FROM nom_base.nom_table

alors que j'aimerai marquer

SELECT nom_attribut FROM nom_table.

J'ai parcouru la doc de Postgre, et j'ai noté que la deuxième syntaxe était accepté. Je pense donc que ca doit être un problème de configuration du serveur, mais je n'ai rien trouve la non plus.

Merci pour votre aide, la je sèche.

Hors ligne

#2 06/05/2009 17:20:59

gleu
Administrateur

Re : Syntaxe des Requetes SQL

Les guillemets doubles sont obligatoires si vous avez créer une table dont le nom comporte des majuscules.

Quant à la syntaxe nom_base.nom_table, elle n'est pas supportée par PostgreSQL. Il est possible qu'Access modifie ensuite la requête/ Ou peut-être que ce que vous prennez pour un nom de base est en fait un nom de schéma.


Guillaume.

Hors ligne

#3 07/05/2009 09:37:27

fetter77
Membre

Re : Syntaxe des Requetes SQL

Bonjour, merci pour votre réponse.

Bien en ce qui concerne les guillemets, en effet ça doit être ça.
Existe t'il un paramètre de serveur afin de supprimer cette contrainte ?

Et par contre pour le second point, en effet je me suis mal exprimé, je dois bien écrire nom_schémas.nom_table et non pas nom_base.nom_table.
La encore, existe t il un paramètre serveur afin de pourvoir écrire des requêtes sans devoir spécifier le nom du schémas?

Ou bien, ca serait que toutes les tables qui ne sont pas dans le schémas public demanderai à être préfixée par le nom du schémas?

Par exemple :

une base qui contient un schémas toto contient une table couleur

-------------------------------------
|          couleur                       |
-------------------------------------
| Description : varchar(45)      |
| TrueColor       : BIGINT(45)  |
| TypeCouleur   : INTEGER      |
...

j aimerai écrire
SELECT Description, TrueColor from couleur;

et non pas

SELECT "Description", "TrueColor" from toto.couleur;

Est 'il possible de modifier des paramètres serveurs pour faire cela ?

Encore merci

Hors ligne

#4 07/05/2009 10:44:30

flo
Membre

Re : Syntaxe des Requetes SQL

Pour écrire les noms de table sans préciser le schéma, c'est possible : il faut modifier le chemin de parcours des schémas (search_path)
C'est expliqué ici :
http://docs.postgresql.fr/8.3/ddl-schemas.html
(paragraphe 5.7 : chemin de parcours des schémas)

Il faut modifier le paramètre search_path dans le fichier postgresql.conf


Pour les guillemets, pourquoi ne pas les mettre par défaut? Access et MySQL ne supportent pas les guillemets? ( il me semble que les guillemets sont un standard SQL). Si un jour tu utilises Oracle, tu auras le même problème : Oracle passe les noms de champs et de tables en majuscule si on ne met pas de guillemets.

Hors ligne

#5 07/05/2009 21:34:37

Marc Cousin
Membre

Re : Syntaxe des Requetes SQL

S'il y a plusieurs bases ou utilisateurs différents dans le cluster, qui pourraient avoir besoin de search_path différent, on peut les mettre aussi par utilisateur ou base (alter database ou alter user)

pour ce qui est de la casse, non, on ne peut pas enlever la contrainte. par contre, on peut enlever la casse des objets (les recréer ou renommer en minuscule). avoir des noms de tables et colonnes avec de la casse n'est pas dans les bonnes pratiques classiques sur une base de données.
La encore on peut corriger tout ca sans tout détruire, avec "alter table xxx rename to", "alter table xxx alter column yyy rename to", de mémoire


Marc.

Hors ligne

Pied de page des forums