mardi 23 mars 2010

PostgreSQL : sélection d'une table implicite

Avec le standard SQL, vous savez qu'on doit construire une requête SQL ainsi :
SELECT *
FROM table
WHERE id = 100;
Sous PostgreSQL, je vais peut-être vous apprendre quelque chose de curieux mais vous pouvez omettre complètement la clause FROM sous certaines circonstances.

Peut-être avez-vous déjà écrit une requête du type :
SELECT 'Code 18', CURRENT_DATE;
En effet, vous n'avez pas eu à spécifier de table car il n'était pas question de sélectionner de données qui en provenaient d'une. Et si c'était le cas ?

Bien qu'elle ait la valeur "false" par défaut depuis Postgres 8.1, il est possible de faire basculer la configuration de add_missing_from à "true" pour ne pas avoir à spécifier de clause FROM si on fait référence au nom de la table dans le SELECT.

Pour l'activer :
SET add_missing_from TO TRUE;
Ce qui permet de faire :
SELECT SUM(order.amount) as total
WHERE province = 'Québec'
Au lieu de la façon standard :
SELECT SUM(amount) as  total
FROM order
WHERE province = 'Québec'
Pour la désactiver de nouveau :
SET add_missing_from TO FALSE;
Bien entendu, vous aurez compris que ce n'est pas un standard SQL.

Aucun commentaire:

Publier un commentaire