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 SQL - critère MAX


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Par défaut Requète SQL - critère MAX
    Bonjour,

    Voici mes tables :

    Table 1
    Champ_Ref
    Champ_designation
    Champ_PU
    Champ_Date

    Table2
    Champ_Ref
    Champ_montant

    Ces deux tables sont liées par le champ_Ref

    J'ai besoin de récupérer 1 seule ligne par Champ_Ref ayant la date la plus récente.

    j'ai essayé avec le critère MAX, mais je ne doit pas avoir la bonne syntaxe. Quelqu'un pour m'aider ?

    Merci !

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Bonjour Feupy,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select t1.Champ_Ref, max(t1.Champ_Date) from  
    Table1 t1 inner join Table2 t2
    on t1.Champ_Ref = t2.Champ_Ref
    group by t1.Champ_Ref

  3. #3
    Membre habitué
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Par défaut
    Bonjour vttman,

    Merci pour ton aide.
    Voici ce que me retourne SQL :

    Msg*4104, Niveau*16, État*1, Ligne*3
    L'identificateur en plusieurs parties "t1.Champ_Ref" ne peut pas être lié.
    Msg*4104, Niveau*16, État*1, Ligne*4
    L'identificateur en plusieurs parties "t1.Champ_Ref" ne peut pas être lié.
    Msg*4104, Niveau*16, État*1, Ligne*1
    L'identificateur en plusieurs parties "t1.Champ_Ref" ne peut pas être lié.
    Msg*4104, Niveau*16, État*1, Ligne*1
    L'identificateur en plusieurs parties "t1.Champ_Date" ne peut pas être lié.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 182
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 182
    Par défaut
    Bonjour,

    Quelles colonnes as-tu besoin de récupérer? Quelle est ta BDD?

  5. #5
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Citation Envoyé par Feupy Voir le message
    Bonjour vttman,

    Merci pour ton aide.
    Voici ce que me retourne SQL :
    Il faut vérifier le nom des tables et des champs ...

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 732
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par Feupy Voir le message
    Bonjour vttman,

    Merci pour ton aide.
    Voici ce que me retourne SQL :
    Bonjour,

    Merci de communiquer non seulement le message d'erreur mais aussi la requête utilisée et la description exacte des tables (ordres CREATE TABLE)

  7. #7
    Membre habitué
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Par défaut
    La requête utilisée est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T1.champ_Ref, max(T1.champ_DATE) from
    T1 iner join T2
    on T1.champ_Ref = T2.champ_Ref
    Group by T1.champ_Ref
    Je souhaite récupérer tous les champs de T1 et le 'Champ_montant' de T2, mais uniquement les entrées ayant la date la plus récente (champ_date).

    T1 : Table 1
    T2 : Table 2

    Merci

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 732
    Billets dans le blog
    10
    Par défaut
    Voici l'une des possibilités :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select T1.champ_Ref
         , T1.champ_date
         , T2.champ_montant
    from tab1 T1
    left join tab2 T2
      on T2.champ_ref=T1.champ_ref   
    where not exists
         (select 1
          from tab1 S1
          where S1.champ_ref = T1.champ_ref
            and S1.champ_date> T1.champ_date
          )
    J'ai ajouté la colonne "T1_champ_date" dans le SELECT sans laquelle je ne vois pas l'intérêt de rechercher la date la plus récente dans T1, puisque T1_champ_ref est forcément identique pour les différentes dates...

    Pour les autres solutions possibles, jetez un coup d'oeil à mon blog ICI

    PS : pas besoin de group by puisqu'aucun agrégat

  9. #9
    Membre habitué
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2016
    Messages : 9
    Par défaut
    Merci à tous !!!

    Bon Dimanche !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/03/2014, 12h18
  2. [AC-97] Requte SQL et MAX(date)
    Par m.semal dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 14/07/2013, 10h57
  3. Requête SQL Fonction Max(LaDate)
    Par ElVatoLoco69 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/02/2012, 12h55
  4. Requête SQL avec max
    Par Guinoumi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/07/2010, 15h08
  5. Requête SQL pour max entre 3 colonnes
    Par lucho013 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 10/10/2007, 18h06

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