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 :

Adresse la plus récente


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 71
    Points : 49
    Points
    49
    Par défaut Adresse la plus récente
    Bonjour tout le monde ,

    J'aurais besoin de votre aide pour une requête svp !

    j'ai des client qui on plusieurs adresse et plusieurs date_fin_adresse , ce que je veux faire c'ast afficher pour chaque client , l'adresse qui correspont a la max(date fin adresse)

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select  num_client,
    max(DTE_FIN_ADRESSE),
    ( COD_POSTAL || LIB_VILLE || COD_PAYS)adr 
    from  d_adresse where BLN_ANCIENNE_ADRESSE=1 
    group by num_client,( COD_POSTAL || LIB_VILLE || COD_PAYS)
    cette requête me retourne le résultat suivant pour l'exemple 1026020 (plusieurs autre cas dans le resultat ) :


    Or mois je veux sélectionner l'ADR avec la dte max parmi ce résultat !! c'est a dire je veux juste avoir le résultat de la 4eme ligne 1026020 13/05/14 75006PARISS1


    merci pour votre aide
    Images attachées Images attachées  

  2. #2
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Bonjour,


    Il faut alors procéder à la sélection de la dernière date via une sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT num_client, dte_fin_adresse,
    ( COD_POSTAL || LIB_VILLE || COD_PAYS)adr 
    FROM d_adresse D
    WHERE BLN_ANCIENNE_ADRESSE=1 
    AND dte_fin_adresse =
       (SELECT max(DTE_FIN_ADRESSE)
       FROM d_adresse 
       WHERE D.num_client = num_client
       );
    A voir selon votre modèle si la jointure se fait uniquement sur "num_client" par contre
    sinon la date de fin est-elle obligatoirement renseignée (NULL possible) ?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    oui la jointure fait uniquement sur "num_client" et la date de fin est obligatoirement renseignée !! Par contre avec la requête que vous m'avez fournis , le client de test (dans l'exemple ) ne figure plus dans le résultat

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    resalut voila la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     SELECT d.num_client, d.dte_fin_adresse,
    ( d.COD_POSTAL || d.LIB_VILLE || d.COD_PAYS)adr 
     
    FROM d_adresse D
    WHERE BLN_ANCIENNE_ADRESSE=1 
    AND dte_fin_adresse =
       (SELECT max(DTE_FIN_ADRESSE)ddd 
       FROM d_adresse a 
       WHERE d.num_client=a.num_client and  BLN_ANCIENNE_ADRESSE=1 
      );
    dans la sous requête il manquait juste la condition BLN_ANCIENNE_ADRESSE=1
    merci infiniment pour ton aide

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    On peut faire mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    with cte_adresse as
    (
    select num_client
         , DTE_FIN_ADRESSE
         , COD_POSTAL || LIB_VILLE || COD_PAYS as adr
         , row_number() over(partition by num_client order by DTE_FIN_ADRESSE desc) as rn
      from d_adresse
     where BLN_ANCIENNE_ADRESSE = 1
    )
    select num_client
         , DTE_FIN_ADRESSE
         , ADR
      from cte_adresse
     where rn = 1;

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 08/07/2005, 18h53
  2. Trouver l'enregistrement le plus récent
    Par PrinceMaster77 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 19/02/2005, 19h14
  3. Extraire la date la plus récente Database MYsql
    Par brazza dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/11/2004, 02h34
  4. recup des enregistrement les plus récents.
    Par julien_guy dans le forum Langage SQL
    Réponses: 8
    Dernier message: 29/06/2004, 11h04
  5. [Tomcat] migration vers une version plus récente
    Par butcher dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 31/10/2003, 21h46

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