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 :

Requête à priori simple


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2002
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 49
    Points : 55
    Points
    55
    Par défaut Requête à priori simple
    Bonjour,
    je coince dans l'élaboration d'un requête.
    Voici un exemple de jeu de données :
    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
    ID	Masse	Index	Vers	Status
    1725				1	
    1727	43066	25,92	2	
    1727	43066	25,92	1	1OP
    1728	46599	51,98	1	
    1729	41566	21,05	2	2LM
    1729	32366	16,65	1	1OP
    1732	41766	20,66	1	2LM
    1733	40272	13,28	1	1OP
    1735	38912	13,54	1	1OP
    1736				2	
    1736	39090	13,99	1	1OP
    1737	41940	20,79	2	1OP
    1737	40562	15,58	1	
    1738	41812	21,23	2	1OP
    1738	41190	16,94	1	
    1741	41687	19,3	3	
    1741				2	
    1741	39187	18,56	1	1OP
    1742	37922	13,34	1	1OP
    1746	38604	15,35	1	
    ID : entier
    Masse : entier
    Index : float
    Vers : entier
    Status : char(3)

    Je désire récupérer pour chaque ID, l'enregistrement ayant le status et la version (Vers) le plus élevé, mais dont la masse et l'index ne sont pas vide !
    Pour aider à la clarté, j'ai sélectionné les enregistrements qui devraient être retourné par la requêtes.
    Pour la compréhension, j'ai aussi trié les colonnes de la manière suivante :
    ID, Vers (DESC), Status (DESC)

    Que dire de plus, sinon que la base de donnée fonctionne sous Oracle 10g

    J'ai essayé autour des requêtes imbriquées, des MAX et des having, mais sans succès ...

    Déjà merci pour votre lecture et surtout pour vos réponses.

    Laurent

  2. #2
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2002
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 49
    Points : 55
    Points
    55
    Par défaut
    Trouvé !

    La solution consiste à travailler avec 2 requêtes qui exclueront les records au travers d'un join.
    En effet, une requête avec Max , Having et Group By ne fournit pas la solution.

    Voici le texte de la requête finale :

    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
    SELECT base.Id,base.Status,base.Vers,base.Masse,base.Index  
        FROM 
        (
        SELECT Id,Vers,Status,rownum NumRow,Masse,Index  
        FROM
        (
          SELECT Id,Vers,Status,Masse,Index FROM MaTable
          WHERE trim(Status) is not null 
          ORDER BY Id,Status DESC,Vers DESC
        )) base
        JOIN
          (SELECT Id,Min(Rownum) MinRow FROM
          (
          SELECT Id,Vers,Status,rownum FROM
          (
            SELECT Id,Vers,Status FROM MaTable
            WHERE trim(Status) is not null 
            ORDER BY Id,Status DESC,Vers DESC
          ))
          GROUP BY Id) temp on Base.Id=temp.Id and Base.NumRow=temp.MinRow
    Laurent

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

Discussions similaires

  1. Difficulté pour une requête a priori simple
    Par Evocatii dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/08/2011, 21h19
  2. Réponses: 6
    Dernier message: 13/07/2010, 10h18
  3. Je bute sur une requête qui est, a priori, simple.
    Par WinNew dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/07/2010, 12h51
  4. [Débutant] Requête statistique simple
    Par drthodt dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 14/10/2005, 09h50
  5. Réponses: 17
    Dernier message: 16/07/2004, 12h19

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