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 :

Requete SQL d'intervalle


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut Requete SQL d'intervalle
    Bonjour,

    Après quelques recherches infructueuses je me demandais s'il était possible de lister à l'aide d'une requete SQL tous les nombres entre un intervalle.

    Exemple j'ai un champ début à 1 et un champ fin à 10
    Je voudrais lister en SQL => 1 2 3 4 5 6 7 9 10

    J'espère avoir été assez claire, merci d'avance...

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Ca dépend, quel est votre SGBD et sa version ?

  3. #3
    jnore
    Invité(e)
    Par défaut
    Citation Envoyé par dutangp Voir le message
    Bonjour,

    Après quelques recherches infructueuses je me demandais s'il était possible de lister à l'aide d'une requete SQL tous les nombres entre un intervalle.

    Exemple j'ai un champ début à 1 et un champ fin à 10
    Je voudrais lister en SQL => 1 2 3 4 5 6 7 9 10

    J'espère avoir été assez claire, merci d'avance...
    Si les valeurs se trouvent dans la même colonne, une requete du genre devrait suffire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT *
    FROM TABLE 
    WHERE champ BETWEEN 1 AND 10

  4. #4
    Membre très actif Avatar de hazamor
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2008
    Messages : 179
    Par défaut
    Citation Envoyé par dutangp Voir le message
    l'aide d'une requete SQL tous les nombres entre un intervalle.
    je croix qu'il faut passer par une procédure stockée.

    Sauf si limites (min et max) l'interval sont conues (ex: borne max de l'intervalle ne deppasse pas 10) , tu peu faire quelque chose comme ça:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select nb
    from (select 1 as nb 
             union
             select 2 as nb
             union
             select 3 as nb
             ....
             select bmax as nb) 
    where nb< vax and nb>vmin

    avec bmax : valeur max possible de borne maximale de l'intervale.

  5. #5
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2009
    Messages : 26
    Par défaut
    Bonjour à tous et merci de vos réponses,

    Il me semblait que ce genre de requete n'était pas aussi simple ... je vais donc explorer d'autres pistes pour éviter ce genre de requete trop complexe.

    Une nouvelle fois merci à vous

  6. #6
    Membre très actif Avatar de _Xavier_
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2009
    Messages : 311
    Par défaut
    Je voudrais avoir le même type de requête pour lister les semaines de l'année, 1,2,3, ... ,52 (ou 53) .

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ben tu fais une table de semaines.
    Voir le tuto de SQLPro sur la gestion des dates.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    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 999
    Billets dans le blog
    6
    Par défaut
    Pour générer une série, dynamiquement et quelle qu'elle soit, vous pouvez utiliser une CTE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    WITH
    T AS
    (SELECT 1 AS DEBUT, 10 AS FIN),
    T1 AS
    (SELECT DEBUT, FIN
     FROM   T
     UNION  ALL
     SELECT T1.DEBUT + 1, T1.FIN
     FROM   T1
     WHERE  T1.DEBUT < T1.FIN)
     SELECT DEBUT AS N
     FROM   T1
    Pour des raisons de performances, il est plus sage de procéder avec une table de données (série de nombre, caldendrier) comportant à l'avance toutes les entrées visées.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/01/2014, 15h45
  2. Requete SQL concernant intervalle de temps
    Par WELCOMSMAIL dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/06/2008, 12h42
  3. [SQL Server] Requete statistique sur intervalle n et n-1
    Par Pasiphae dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 22/05/2006, 15h55
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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