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 :

Recuperer les max des dates à partir d'une autre table


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Recuperer les max des dates à partir d'une autre table
    Bonjour,
    Si vous pouvez m'aider, voila le probleme:

    J'ai deux tables que voici:

    Table1 : les operations effctuées sur un compte

    Date Compte
    2006-01-01 500
    2006-03-01 700
    2006-05-01 900
    2006-08-20 1000
    2006-08-28 2000
    2006-09-10 3000
    2006-09-20 3500
    2006-09-28 4000
    2006-10-29 5000

    Table2 :contient les dernier jour du mois de l'année

    DerJourMois
    2006-01-31
    2006-02-28
    2006-03-31
    2006-04-30
    2006-05-31
    2006-06-30
    2006-07-31
    2006-08-31
    2006-09-30
    2006-10-31


    Le but c'est pour chaque fin de mois on aura la derniere etat du compte:
    vois le resulta:

    2006-01-31 500
    2006-02-28 500
    2006-03-31 700
    2006-04-30 700
    2006-05-31 900
    2006-06-30 900
    2006-07-31 900
    2006-08-31 2000
    2006-09-30 4000
    2006-10-31 5000

    j'espère que vous avez compris
    et merci d'avance

  2. #2
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 274
    Points : 1 280
    Points
    1 280
    Par défaut
    à premiere vue, je ferais comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Date, compte FROM Table1, Table2
    WHERE
    DATEPART(year,Table1.Date) = DATEPART(year,Table2.DerJourMois) AND
    DATEPART(month,Table1.Date) = DATEPART(month,Table2.DerJourMois) AND
    DATEPART(day,Table1.Date) = (SELECT MAX(DATEPART(day,Table1.Date) )FROM Table1)
    nan je viens d'essayer c'est n'importe quoi !
    j'suis vert !

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Tu peux obtenir l'enregistrement correspondant à une date maximum avec un LEFT JOIN.
    L'enregistrement le plus récent, c'est celui pour lequel aucun autre enregistrement n'est plus récent.

  4. #4
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    apres avoir essayer, on recupere juste le dernier compte du meme mois,
    c-a-dire si on au mois de juillet et il n' y a eu aucune operation on recupere rien. dans ce cas on doit normalement recuperer le compte de la dernier operation effectuer qui été pendant le mois mars.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Donne-nous la requête que tu as exécuté pour qu'on puisse la corriger.

    si on au mois de juillet et il n' y a eu aucune operation on recupere rien. dans ce cas on doit normalement recuperer le compte de la dernier operation effectuer qui été pendant le mois mars.
    Pour un mois donné, tu récupère toutes les dates inférieures ou égales au moins en cours, et pour lesquelles aucun autre enregistrement n'est plus récent par rapport au moins donné.
    Pour avoir la dernière date, quel que soit le moins, il ne faut pas se limiter au moins donné, mais prendre toutes les dates inférieures au moins.

  6. #6
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Le but est que pour un client donner, on puisse lui dire dans un relevé, l'état de son compte chaque fin de mois.
    La Table1 donne en détaille l'etat du compte à chaque operation effectuée.
    Mais nous, on veut l'etat de son compte à la fin de chaque mois (dernier jour du mois 'table2'). C-a-d pour chaque fin de mois on lui donne son état compte qui est celle de la derniere operation effectuée avant le dernier jour du mois.
    Si par exemple Monsieur X effectuer une operation au mois d'octobre et rien pendant le mois de novembre à la fin du mois on aura le meme chose que le mois d'octobre.
    J'espère que c clair, merci d'avance

  7. #7
    cdu
    cdu est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Août 2004
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 196
    Points : 222
    Points
    222
    Par défaut
    bonjour,
    tu dois pouvoir faire quelquechose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select table2.date, t1.compte
    from table2, table1 t1
    where to_char(table2.date,'MM-YYYY')=to_char(t1.date,'MM-YYYY')
    and t1.date >=all (select t2.date from table1 t2
                         where to_char(table2.date,'MM-YYYY')=to_char(t2,'MM-YYYY'))

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut Left Join
    Si pas changement d'année, cette instruction fonctionne:

    SELECT max(A.T2DATE), max(B.T1MNT)
    FROM table2 A
    LEFT JOIN table1 B
    ON year(A.t2date) >= year(B.t1date)
    AND month(A.t2date) >= month(B.t1date)
    GROUP BY A.t2date

  9. #9
    Futur Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Points : 9
    Points
    9
    Par défaut la solution est:
    SELECT derjourmois, compte FROM table1, table2
    WHERE
    date = (SELECT MAX(date) FROM table1 where derjourmois >= date );

    Merci pour votre aide

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2014, 20h55
  2. recupere des données a partir d-une autre fenetre
    Par b2o92ikho dans le forum Forms
    Réponses: 1
    Dernier message: 09/04/2009, 16h30
  3. Réponses: 14
    Dernier message: 15/04/2008, 16h39
  4. Réponses: 5
    Dernier message: 12/12/2006, 16h24
  5. Lister des element HTML à partir d'une autre frame
    Par psychomatt dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/03/2006, 18h03

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