mardi 23 mars 2010
Avec le standard SQL, vous savez qu'on doit construire une requête SQL ainsi :
SELECT *Sous PostgreSQL, je vais peut-être vous apprendre quelque chose de curieux mais vous pouvez omettre complètement la clause FROM sous certaines circonstances.
FROM table
WHERE id = 100;
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 totalAu lieu de la façon standard :
WHERE province = 'Québec'
SELECT SUM(amount) as totalPour la désactiver de nouveau :
FROM order
WHERE province = 'Québec'
SET add_missing_from TO FALSE;Bien entendu, vous aurez compris que ce n'est pas un standard SQL.