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 :

Soucis pour utiliser max(date)


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut Soucis pour utiliser max(date)
    Bonjour,

    J'essaye de faire une requête pour récupérer les données de 2 tables, ma requête à l'air de tourner correctement, sans message d'erreur mais pourtant ça me sort zéro résultat.

    Ma requête doit me permettre de "piocher" dans 2 tables disctintes (bilan et societexx) les infos que j'ai besoin d'afficher. L'une des conditions est que je ne souhaite avoir que la "datecloture" la plus récente pour chaque "siret" (il y a plusieurs enregistrements pour chaque siret à des dates différentes)

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select b.SIRET, DENOMINATION, CODEPOSTAL, CHP_HN, datecloture
    from bilan b, societesxx s
    where b.SIRET in ('FR09577350424', 'FR09331878421', 'FR09428627376', 'FR09310456413')
    and b.siret = s.siret
    and datecloture = (select max(datecloture)from bilan b)
    Merci d'avance à celui qui pourra m'éclairer !

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 179
    Points : 83
    Points
    83
    Par défaut
    et si tu essaye avec cette requete ? quesque ça donne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT b.SIRET, DENOMINATION, CODEPOSTAL, CHP_HN, MAX(datecloture)
    FROM bilan b, societesxx s
    WHERE b.SIRET IN ('FR09577350424', 'FR09331878421', 'FR09428627376', 'FR09310456413')
    AND b.siret = s.siret
    group by b.SIRET
    J'espere pouvoir t'aider

  3. #3
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Ou peut-être écrire la jointure, regrouper et trier !
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par mouchkar Voir le message
    et si tu essaye avec cette requete ? quesque ça donne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT b.SIRET, DENOMINATION, CODEPOSTAL, CHP_HN, MAX(datecloture)
    FROM bilan b, societesxx s
    WHERE b.SIRET IN ('FR09577350424', 'FR09331878421', 'FR09428627376', 'FR09310456413')
    AND b.siret = s.siret
    group by b.SIRET
    J'espere pouvoir t'aider
    Je viens de tenter et j'ai le message :

    erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ora-00979 : n'est pas une expression GROUP BY
    Et mon curseur se place juste avant "DENOMINATION"

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Un peu plus d'informations : Cours sur les Regroupements en SQL
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    J'ai regarde les cours, il disent de mettre toutes les colonnes dans la clause group by ... je le fais et ça marche... sauf pour la clause max(date) puisqu'il me sort tous les enregistrements peu importe la date

    Que faire svp ?

    Mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT b.SIRET, DENOMINATION, CODEPOSTAL, CHP_HN, MAX(datecloture)
    FROM bilan b, societesxx s
    WHERE b.SIRET IN ('FR09577350424', 'FR09331878421', 'FR09428627376', 'FR09310456413')
    AND b.siret = s.siret
    GROUP BY b.SIRET, DENOMINATION, CODEPOSTAL, CHP_HN

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Faute de connaître la structure de votre base de données, il nous est difficile de savoir à quelle table appartiennent les colonnes DENOMINATION, CODEPOSTAL, CHP_HN.
    Règles du forum Langage SQL à lire par tous
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    Désolé de ne pas avoir donné toutes les infos nécessaire, je corrige donc :

    DENOMINATION, CODEPOSTAL, CHP_HN = appartiennent tous à la table societexx

    Siret = est en commun (clé unique) à la table Societexx et Bilan

    Datecloture = seulement dans la table bilan

    Voilà... si il manque autre chose n'hésitez pas !

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT  s.siret
        ,   s.denomination
        ,   s.codepostal
        ,   s.chp_hn
        ,   MAX(b.datecloture)
    FROM    bilan b
        INNER JOIN
            societesxx s
            ON  b.siret = s.siret
    WHERE   b.SIRET IN ('FR09577350424', 'FR09331878421', 'FR09428627376', 'FR09310456413')
    GROUP BY s.siret
        ,   s.denomination
        ,   s.codepostal
        ,   s.chp_hn;
    Cela devrait répondre à ton besoin
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    Oui ça marche ! Excellent !
    Merci pour ta patiente et pour ton aide Al1_24

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    J'ai parlé trop vite

    Enfin si ça marche avec les paramètre que tu m'as donné... sauf que j'ai voulu ajouter une colonne en plus 'note_totale' qui n'appartien qu'à la table bilan et là paf... ça me ressort toutes mes dates

  12. #12
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    As-tu compris pourquoi ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    Si je ne me trompe pas c'est le "groupe by" qui fait que ça ne fait qu'une ligne par siret en regroupant les 3 colonnes appartenant à la table societexx... jusque là c'est bon ?

    Je ne peux pas rajouter ma nouvelle colonne dans ce groupe by puisque pas de la même table... doit y avoir une astuce je pense... mais j'avoue que les cours sont assez complexe après...

    quel est la fonction qui permet de grouper tout ça telle est la question...

  14. #14
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Ce n'est plus le même type de problème...
    Il faut maintenant rechercher les lignes de la table bilan correspondant à la dernière date de clôture enregistrée :
    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
    SELECT  s.siret
        ,   s.denomination
        ,   s.codepostal
        ,   s.chp_hn
        ,   b.datecloture
        ,   b.note_totale
    FROM    societesxx s
        INNER JOIN
            bilan b
            ON  b.siret = s.siret
    WHERE   b.SIRET IN ('FR09577350424', 'FR09331878421', 'FR09428627376', 'FR09310456413')
        AND EXISTS
            (   SELECT  *
                FROM    bilan b2
                WHERE   b.siret = b2.siret
                GROUP BY b2.siret
                HAVING  MAX(b2.datecloture) = b.datecloture
            )
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 138
    Points : 45
    Points
    45
    Par défaut
    oulaaa, je vais analyser la requête là pour comprendre morceau par morceau comme elle fonctionne ! Il est clair que jamais je l'aurais fait seul ... merci encore ! (elle fonctionne je viens de la tester) Je vais pouvoir l'utiliser et même l'adapter à d'autres tables et colonnes dès que j'en aurais compri toutes les subtilités !

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

Discussions similaires

  1. Soucis de configuration pour utiliser les EJB3
    Par Askerat dans le forum Glassfish et Payara
    Réponses: 37
    Dernier message: 15/02/2009, 17h52
  2. utiliser le calendrier pour les champs date
    Par montassar.nizar dans le forum JDeveloper
    Réponses: 3
    Dernier message: 17/08/2008, 14h31
  3. Réponses: 1
    Dernier message: 18/03/2007, 17h52
  4. Réponses: 4
    Dernier message: 17/11/2006, 10h46
  5. Réponses: 3
    Dernier message: 07/10/2006, 18h55

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