From: | Jean-Paul Argudo <jean-paul(at)argudo(dot)org> |
---|---|
To: | Pierre Couderc <pierre(at)couderc(dot)cc> |
Cc: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: SQL pour trouver le premier libre? |
Date: | 2006-06-03 09:58:49 |
Message-ID: | 44815D59.3070309@argudo.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Re,<
> Maintenant, je vais essayer de comprendre comment ça marche....
>> test2=> select a+1 as id_disponible from nombres except select a from
>> nombres order by id_disponible limit 1;
C'est tout bête:
* select a+1 as id_disponible from nombres
renvoie une liste des (a) augmentés de 1 qu'on renomme "id_disponible"
pour faire joli
* select a from nombres
renvoie la liste des (a) telle qu'elle est dans la table
* EXCEPT
fais l'ensemble des (a+1) moins l'ensemble des (a):
il reste donc tous les (a+1) qui n'existent pas dans les (a)
* ORDER BY id_disponible
on classe les (a+1) qui n'existent pas encore dans (a)
du plus petit au plus grand
* LIMIT 1
parmi cette liste classée, on ne prends que le 1er
Au résultat:
On récupère le plus petit des (a+1) n'existant pas encore
parmis les (a)
J'espère que c'est clair. La dernière fois que j'ai tenté d'expliquer
des Maths à quelqu'un c'était au bac et ce ne fut pas très brillant :-))
Cordialement,
--
Jean-Paul Argudo
www.PostgreSQLFr.org
From | Date | Subject | |
---|---|---|---|
Next Message | Pierre Couderc | 2006-06-03 10:04:05 | Re: SQL pour trouver le premier libre? |
Previous Message | Jean-Paul Argudo | 2006-06-03 09:53:47 | Re: SQL pour trouver le premier libre? |