IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Premier entier disponible


Sujet :

Langage SQL

  1. #21
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 51 646
    Points
    51 646
    Billets dans le blog
    6
    Par défaut
    Bravo Negaton, vous avez terriblement progressé.

    J'ai rajouté un autre union all, pour gérer le cas ou un premier trou est en début de fichier :
    par exemple, si j'ai la suite "2,3,4,5" je souhaite retourner "1" et votre requête retourne "6".
    Encore eut-il fallut savoir que votre borne basse était 1. Dans ce cas... il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SELECT MIN(NEW)
    FROM   (SELECT N1.N+1 AS NEW
            FROM   INC AS N1
                   JOIN INC AS N2
                        ON N1.N < N2.N
            GROUP  BY N1.N
            HAVING N1.N < MIN(N2.N) - 1 
            UNION ALL
            SELECT MAX(N) + 1
            FROM   INC
            UNION ALL
            SELECT MIN(N) - 1
            FROM   INC
            WHERE  NOT EXISTS(SELECT *
                              FROM   INC        
                              WHERE  N = 1)
            UNION ALL
            SELECT 1
            WHERE  NOT EXISTS(SELECT *
                              FROM   INC        
                              WHERE  N = 1)
           ) AS T
    Ceci règle d'ailleurs un autre cas de figure : celui de la table vide.

    A +

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 95
    Points : 66
    Points
    66
    Par défaut
    merdalor, le coup de la table vide !
    Cette requête fusionne un peu les deux méthodes (Waldar et sqlpro)

    Merci pour ces précisions sqlpro !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [MySQL] Une requete sql WHERE pour filtrer le premier entier ou avant tiret.
    Par 0ri0n dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/04/2015, 09h59
  2. Le code source du premier Photoshop disponible en téléchargement
    Par Hinault Romaric dans le forum Actualités
    Réponses: 22
    Dernier message: 20/02/2013, 16h28
  3. Trouver le premier enregistrement disponible
    Par MistyMan dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/09/2009, 20h29
  4. Premiere occurence d'un entier dans une chaine
    Par amika dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2006, 20h04
  5. Premier numéro disponible dans une tranche
    Par matyeu dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/04/2006, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo