Re: SQL pour trouver le premier libre?

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

In response to

Responses

Browse pgsql-fr-generale by date

  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?