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 PostgreSQL Discussion :

Sélectionner des lignes apparaissant après une certaine ligne [9.3]


Sujet :

Requêtes PostgreSQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Sélectionner des lignes apparaissant après une certaine ligne
    Bonjour bonjour,

    Après plusieurs heures de recherches, je n'ai toujours pas trouvé de solution et du coup, j'ai grand espoir que meilleur que moi pourra me sauver !

    Voici la problématique :
    J'ai un SELECT qui me donne les informations suivantes :

    id_adh prenom taux code montant total date
    123 Paul 100 PH1 50 300 09/02/1990
    123 Paul 65 SMU 250 300 11/02/1990
    123 Paul 100 PH2 35 35 11/02/1990
    123 Paul 100 PH1 55 55 13/02/1990
    123 Paul 65 PH3 100 250 15/02/1990
    125 Jack 65 PH3 100 250 09/02/1990
    125 Jack 65 PH2 65 100 12/02/1990
    125 Jack 65 SMU 65 100 13/02/1990
    125 Jack 100 VSL 100 100 14/02/1990

    Avec ce SELECT, nous avons tous les codes reçus par adhérent classé par ordre d'adhérent puis par ordre de date croissante.

    Ce que j'essaie de faire est de récupérer de ce SELECT seulement toutes les lignes de chaque adhérent apparaissant après la ligne du code SMU de chacun.

    C'est-à-dire obtenir le tableau suivant :

    id_adh prenom taux code montant total date
    123 Paul 65 SMU 250 300 11/02/1990
    123 Paul 100 PH2 35 35 11/02/1990
    123 Paul 100 PH1 55 55 13/02/1990
    123 Paul 65 PH3 100 250 15/02/1990
    125 Jack 65 SMU 65 100 13/02/1990
    125 Jack 100 VSL 100 100 14/02/1990

    Auriez-vous une petite idée ? ^^

    Merci d'avance =)

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Points : 342
    Points
    342
    Par défaut
    A supposer que la table des données est nommé adherent
    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
     
    SELECT
        adherent.id_adh,
        adherent.prenom,
        adherent.taux,
        adherent.code,
        adherent.montant,
        adherent.total,
        adherent.date -- attention date est un mot clé remplacer par le nom de la colonne réelle
    FROM
        adherent JOIN (SELECT * FROM adherent WHERE code = 'SMU') as tmp
                         ON adherent.id_adh = tmp.id_adh
                       AND adherent.date   >= tmp.date
    ORDER BY
          adherent.date

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Points : 342
    Points
    342
    Par défaut
    Avec les CTE cela donne
    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
     
    WITH tmp AS (
        SELECT
            *
        FROM
            adherent WHERE code = 'SMU'
        )
    SELECT
        adherent.id_adh,
        adherent.prenom,
        adherent.taux,
        adherent.code,
        adherent.montant,
        adherent.total,
        adherent.date
    FROM
        adherent JOIN tmp
                   ON adherent.id_adh  = tmp.id_adh
                  AND adherent.date   >= tmp.date
    ORDER BY
          adherent.date

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Vous pourriez faire un simple EXISTS

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Je ne sais pas trop comment utiliser "Exists" mais la solution de esired marche à merveille !!

    Merci infiniment !! =D

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

Discussions similaires

  1. Retour à la ligne après une certaine balise (sed ?)
    Par openlife dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 19/04/2011, 19h32
  2. Réponses: 7
    Dernier message: 16/07/2007, 17h23
  3. Nombre de lignes obtenues après une requete sql
    Par maxlegrand dans le forum JDBC
    Réponses: 8
    Dernier message: 06/06/2007, 10h38
  4. selection d'une cellule sur une certaine ligne
    Par florent149 dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 20/07/2006, 17h37
  5. Récupéré l'identifiant d'une certaine ligne
    Par Trunks dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/01/2005, 01h08

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