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 numéro disponible dans une tranche


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Premier numéro disponible dans une tranche
    Bonjour,

    Je dois trouver dans une table ne contenant qu'un champ NUMERO le premier N° disponible dans une tranche.

    Ca me parait tout bête mais je sèche, quelqu'un aurait il une brillante idée ?

    Existe t'il une instruction SQL permettant d'obtenir un ensemble de N° : genre "select 1 to 10" qui renverrait 10 lignes contenant les numéros 1 à 10 ?

    Merci d'avance...

    Matyeu

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    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 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Ajoutez à votre base une table de numéro et insérez y tous les numéros de la terre....

    Exemple :
    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
    CREATE TABLE T_NUM (NUM INT)
     
    INSERT INTO T_NUM VALUES (0)
    INSERT INTO T_NUM VALUES (1)
    INSERT INTO T_NUM VALUES (2)
    INSERT INTO T_NUM VALUES (3)
    INSERT INTO T_NUM VALUES (4)
    INSERT INTO T_NUM VALUES (5)
    INSERT INTO T_NUM VALUES (6)
    INSERT INTO T_NUM VALUES (7)
    INSERT INTO T_NUM VALUES (8)
    INSERT INTO T_NUM VALUES (9)
     
     
    INSERT INTO T_NUM
    SELECT T1.NUM + T2.NUM * 10 + T3.NUM * 100 + T4.NUM * 1000 
    FROM   T_NUM AS T1
           CROSS JOIN T_NUM AS T2 
           CROSS JOIN T_NUM AS T3
           CROSS JOIN T_NUM AS T4 
     
    WHERE  T1.NUM + T2.NUM * 10 + T3.NUM * 100 + T4.NUM * 1000 > 9
    Dès lors votre recherche va devenir triviale...

    Exemple :

    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
    CREATE TABLE T_matyeu
    (NUMERO INT)
     
    INSERT INTO T_matyeu VALUES (5)
    INSERT INTO T_matyeu VALUES (6)
    INSERT INTO T_matyeu VALUES (11)
    INSERT INTO T_matyeu VALUES (12)
    INSERT INTO T_matyeu VALUES (23)
     
    SELECT MIN(NUM)
    FROM   T_matyeu
           RIGHT OUTER JOIN T_NUM
                ON NUMERO = NUM
    WHERE  NUMERO IS NULL
      AND  NUM BETWEEN (SELECT MIN(NUMERO)
                        FROM T_matyeu) 
                   AND (SELECT MAX(NUMERO)
                        FROM T_matyeu)
    A +

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    C'est effectivement une solution mais nous ne "pouvons" hélas créer de table technique dans notre base de données.

    Merci cependant pour cette réponse qui me laisse à penser qu'il n'y'a pas d'ordre "magique" SQL permettant de réaliser l'opération...

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    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 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    C'est effectivement une solution mais nous ne "pouvons" hélas créer de table technique dans notre base de données.
    mais vous pouvez créer cela dans une autre base ! Non ??? Une requête entre deux bases marche parfaitement...

    Merci cependant pour cette réponse qui me laisse à penser qu'il n'y'a pas d'ordre "magique" SQL permettant de réaliser l'opération...
    SQL repose sur une logique ensembliste partant de données. Si les données n'existe pas SQL ne saurait magiquement les inventer.

    Maintenant je serais curieux de savoir à quoi peut bien vous servir cette demande...
    Lisez l'article que j'ai écrit sur un sujet proche :
    http://sqlpro.developpez.com/cours/clefs/#L3.1

    A +

  5. #5
    Membre confirmé Avatar de Monstros Velu
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 619
    Points : 601
    Points
    601
    Par défaut
    je me demandais pourquoi la simple requête suivante ne pourrait pas marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select min(NUMERO)
    from TABLE
    where NUMERO > VALEUR

Discussions similaires

  1. Remplacer une colonne par ses numéros correspondants dans une liste
    Par freestyler dans le forum Shell et commandes GNU
    Réponses: 27
    Dernier message: 12/06/2008, 16h42
  2. Réponses: 1
    Dernier message: 02/04/2008, 15h17
  3. Affichage des valeurs disponibles dans une zone de liste déroulante
    Par azerty dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/06/2007, 13h29
  4. Réponses: 6
    Dernier message: 05/02/2007, 21h49
  5. Numéro auto dans une requete
    Par genius99 dans le forum Access
    Réponses: 4
    Dernier message: 06/10/2005, 10h40

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