Bonjour à tous,
je voudrai construire une requete permettant de dégager les plages de nombres consécutifs non utilisés sur un champ number d'une table.
Any idea ?
merci pour votre aide.
Bonjour à tous,
je voudrai construire une requete permettant de dégager les plages de nombres consécutifs non utilisés sur un champ number d'une table.
Any idea ?
merci pour votre aide.
Utilisez les fonctions analytiques pour ça. Un petit exemple sera bien venu pour éviter des confusions.
Voici une requête qui pourrait être un point de départ :
A adapter bien sûr...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select level from dual connect by level <= 100 minus select col_num from nom_table
dgi77 : excellent et simplissime !! effectivement c'est un très bon point de départ. J'obtiens ainsi tous les nombres non utilisés effectivement mais comment en faire ressortir les extrêmes des plages et uniquement les extrêmes ?
Pour mnitu : voici un exemple.
Table client (client_id, nom, prenom, ....)
Le champ client id est affecté par une séquence mais dans certains cas (supression physique du client, non utilisation de la valeur nextval, ...) des trous sont générés. Je me retouve avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from client order by client_idclient_id;nom;prenom
1;NOM_CLIENT1;PRENOM_CLIENT1
2;NOM_CLIENT2;PRENOM_CLIENT2
9;NOM_CLIENT9;PRENOM_CLIENT9
15;NOM_CLIENT15;PRENOM_CLIENT15
Je souhaite que la requete me renvoie par exemple
Plage 3 à 8 disponible
Plage 10 à 14 disponible
Si vous voulez boucher les trous, c'est très mauvaise idée !
Non non ce n'est pas le cas.
Ceci dit pourquoi est ce une mauvaise idée ?
Partager