Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: SQL pour trouver le premier libre?


  • From: Pierre Couderc <pierre(at)couderc(dot)cc>
  • To: Jean-Paul Argudo <jean-paul(at)argudo(dot)org>
  • Cc: pgsql-fr-generale(at)postgresql(dot)org
  • Subject: Re: SQL pour trouver le premier libre?
  • Date: Sat, 03 Jun 2006 12:04:05 +0200
  • Message-id: <44815E95(dot)8040908(at)couderc(dot)cc>

Oui, c'est très clair maintenant.
Le problème, c'est mes tenatatives de m'occuper de base de données sans être compétent...

Jean-Paul Argudo a écrit :
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,

  



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group