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

SQL Oracle Discussion :

Requête SQL : plage de reçus


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2010
    Messages : 48
    Par défaut Requête SQL : plage de reçus
    Bonjour,
    encore une fois je me tourne vers vous pour demander de l'aide.
    en fait j'ai la table suivante :

    Site (ID_site, ref_site)
    Reçu (ID_reçu, ref_reçu, ID_site)

    un site peut avoir un ou plusieurs reçus.

    les reçus sont divisés par plage, c'est à dire, on trouve des reçus de 1--1000, d'autre de 1020--1004, d'autre de 2058--2100.

    on appel cela des plages de reçu.

    ma demande consiste à trouver ces plages dans la table Reçu.

    en utilisant la min et max, je n'ai pu avoir qu'une seule plage incorrecte, car ça donne le min et le max dans tous les ref_reçu.

    y'a t-il une requête ou fonction sql qui me permet d'afficher les plages de site (Ref_site) sans prendre en compte les sauts vides tel que entre 1005 et 2058.

    merci

  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 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
    Dans une base de données, vous n'y trouverez que ce que vous y mettez. SI ces informations n'y figurent pas, vous ne pourrez pas les obtenir magiquement !

    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/ * * * * *

  3. #3
    Membre averti
    Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2010
    Messages : 48
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Dans une base de données, vous n'y trouverez que ce que vous y mettez. SI ces informations n'y figurent pas, vous ne pourrez pas les obtenir magiquement !

    A +
    bjr, apparament vous m'avez pas bien compris. je procède par exemple:
    j'ai la table site qui contient SITE [(ID_site_1,REF_1 )(ID_site_2, REF_2)(ID_site_3, REF_3)]
    et la table Reçu [(ID_1, 1 ,ID_site_1 )(ID_2, 2 ,ID_site_1)(ID_3, 3 ,ID_site_1)(ID_4, 4 ,ID_site_1)(ID_30, 30 ,ID_site_1)(ID_31, 31 ,ID_site_1)]

    le résultat que je veux avoir correspond au deux plage qui existe pour ID_SITE_1 qui sont deux plage (1--4) et (30--31). la requête doit différencier ces plage.

  4. #4
    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
    Tout le monde comprend dès lors que sont suivies les règles du forum.

    Il manque trop d'informations pour vous aider, notamment le SGBD, le moyen de créer un jeu de données en entrée, la requête où vous en êtes qui vous bloque et ce que vous attendez en sortie.

  5. #5
    Membre averti
    Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2010
    Messages : 48
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Tout le monde comprend dès lors que sont suivies les règles du forum.

    Il manque trop d'informations pour vous aider, notamment le SGBD, le moyen de créer un jeu de données en entrée, la requête où vous en êtes qui vous bloque et ce que vous attendez en sortie.
    comme complément a ma demande ci-dessous le script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select site.ref_site,
           min(to_number(SUBSTR(recu.ref_recu,INSTR(recu.ref_recu,'/')+1))) as debut,
           max(to_number(SUBSTR(recu.ref_recu,INSTR(recu.ref_recu,'/')+1))) as fin
     
      from 
           recu,
           site
     
     where 
     
           site.ID_SITE = reçu.ID_SITE
    merci

  6. #6
    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
    Merci de lire le lien précédent.

    Plus la présentation de votre problème est claire, synthétique et bien présentée, plus vite vous obtiendrez une réponse exacte.

  7. #7
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    La requête suivante devrait donner un bon point de départ :
    Code sql : 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
    23
    24
    25
    26
    27
    28
    29
    With SITE As
         (Select 'ID_site_1' as id_site, 'REF_1' as ref_site From Dual Union All
         Select 'ID_site_2' as        , 'REF_2' as          From Dual Union All
         Select 'ID_site_2' as        , 'REF_2' as          From Dual ),
    RECU As
         (Select 'ID_1' as id_recu, 1 as ref_recu ,'ID_site_1' as id_site From Dual Union All
         Select 'ID_2'           , 2             ,'ID_site_1'            From Dual Union All
         Select 'ID_3'           , 3             ,'ID_site_1'            From Dual Union All
         Select 'ID_4'           , 4             ,'ID_site_1'            From Dual Union All
         Select 'ID_30'          , 30            ,'ID_site_1'            From Dual Union All
         Select 'ID_31'          , 31            ,'ID_site_1'            From Dual )
    select site.ref_site,
           min (ref_recu) as debut,
           max (ref_recu) as fin
    from site,
         (select id,
                 id_site,
                 ref_recu,
                 max(debut_plage_recu) over (partition by id_site order by ref_recu) as debut_plage_recu
          from (select id,
                       ref_recu,
                       id_site,
                       decode (lag (ref_recu) over (partition by id_site order by ref_recu), ref_recu-1, null, ref_recu) as debut_plage_recu
                from recu
                ) recu_v1
          ) recu_v2
    Where site.id_site = recu_v2.id_site
    Group By site.ref_site,
             recu_v2.debut_plage_recu

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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