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

Requêtes MySQL Discussion :

Trouver le premier enregistrement disponible


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 80
    Points : 33
    Points
    33
    Par défaut Trouver le premier enregistrement disponible
    Bonjour,

    J'ai une table qui contient un champ chrono varchar(5) de la forme '00125'
    Nous avons repris l'antériorité avec une chronologie anarchique.

    Je voudrais maintenant récupérer le premier enregistrement disponible après un chrono donné en paramètre. Je m'explique :
    soit l'existant de la chronologie suivant

    '00125' '00126' '00127' '00130'


    si je cherche le premier disponible à partir de '00125' cela devrait me donner '00128'

    Ma question est donc puis-je m'en sortir avec une requête (je souhaiterais éviter de faire une boucle en php)

    Cordialement

  2. #2
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour,

    Vous pouvez vous en sortir avec une seule requête.
    Mais avec MySQL vous serez obligé de créer une table dans laquelle sera stockée toutes les valeurs de "chrono" possible.

    Exemple :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE chronologie (chrono int);
    INSERT INTO chronologie VALUES (125), (126), (127), (130);
     
    CREATE TABLE valeur_possible (v int);
    INSERT INTO valeur_possible VALUES (123), (124), (125), (126), (127), (128), (129), (130), (131);

    La requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT MIN(v) AS chrono
    FROM valeur_possible
    WHERE NOT EXISTS (
        SELECT *
        FROM chronologie
        WHERE chronologie.chrono=valeur_possible.v)
    AND v > 125
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    chrono
    -------
      128

  3. #3
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Je pense qu'il y a bien plus simple
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT a.chronologie+1 as trou
    FROM chronos a
    WHERE NOT EXISTS (SELECT b.chronologie 
                      FROM chronos b 
                      WHERE b.chronologie=a.chronologie+1)
    ORDER BY trou LIMIT 1

Discussions similaires

  1. Premier numéro disponible dans une tranche
    Par matyeu dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/04/2006, 16h45
  2. Prendre que les 5 premiers enregistrements (les + important)
    Par __fabrice dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/11/2005, 09h24
  3. comment récupérer les x premiers enregistrements
    Par laurent82 dans le forum SQL
    Réponses: 7
    Dernier message: 12/12/2004, 16h29
  4. Récupérer le premier enregistrement d'un attribut
    Par Tapioca dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 05/08/2004, 09h56
  5. Trouver le dernier enregistrement d'une table
    Par remi59 dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/03/2003, 14h54

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