Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  1. #1
    Nouveau Membre du Club
    Inscrit en
    octobre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 40
    Points : 26
    Points
    26

    Par défaut Grouper Par Mois, Site, en fonction Statut

    Bonjour ;
    Je cherche à Grouper des cotisations par site, statut et mois
    Par exemple
    J’ai trois tables Personne, Cotisation, Site

    Personne

    Nom
    Prénom
    numSecu
    numMatri
    Ect..

    Pour la cotisation il y a une dure de cotisation donc date de début et et date de fin de cotisation et le statut de la cotisation

    Cotisation
    Montant
    dateDebut (jj/mm/aaaa)
    datefin (jj/mm/aaaa)
    statut
    Ect..

    Et enfin la table Site
    les cotisations sont collectés au site où la personne est attachés

    Site
    Non Site
    Ect..

    Résultat attendu : Nombre de Cotisations par Site par Mois en fonction du Statut (de la Cotisation)

    Site Janvier Février Mars Avril Mai Ect.. Décembre
    A 5 5 23 4 5 6 4
    B 12 8 5 3 5 42 11
    C 6 9 6 4 8 3 3


    Je sais pas comment mis prendre surtout pour extraire le mois pour information EXTRACT ne marche pas. J’utilise JPQL

  2. #2
    Membre Expert
    Avatar de islamov2000
    Homme Profil pro islamov islamov
    Ingénieur d'études & developpement en informatique
    Inscrit en
    septembre 2007
    Messages
    628
    Détails du profil
    Informations personnelles :
    Nom : Homme islamov islamov
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2007
    Messages : 628
    Points : 1 172
    Points
    1 172

    Par défaut

    il faut penser au résulat LIGNES et non pas COLONNES.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Site mois(mm/yyyy) 
    A Janvier/2011 
    A Février/2011 
    A Mars /2011
    A Avril /2011
    A Mai /2011
    Ect.. 
    B Décembre/2011
    B Janvier /2012
    B Février /2012
    B Mars /2012
    B Avril /2012
    B Mai /2012
    Ect.. 
    B Décembre/2012
    ....
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  3. #3
    Nouveau Membre du Club
    Inscrit en
    octobre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 40
    Points : 26
    Points
    26

    Par défaut

    Merci Pour votre Reponse

    Mon Probleme c'est pas l'affichage
    Mais c'est surtout comment formuler la requete avec les counts de chaque mois de L'année
    Et extraire le mois de la Date et grouper dessus

  4. #4
    Nouveau Membre du Club
    Inscrit en
    octobre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 40
    Points : 26
    Points
    26

    Par défaut

    Bonjour;

    J'ai fait des choses pour répondre à ma demande
    Pour vous dire vrai, je ne suis pas sure du résultat mais pas du tout
    Donc je reviens vers vous pour une vérification
    Merci

    Code :
    1
    2
    3
    4
    5
    SELECT ct.idCotisation, count(ct.statut),ct.statut, monthname(ct.datedeFin) As  DateFin,st.nomSite,MONTH(ct.datedeFin) AS DateFin 
      FROM Cotisation ct
      INNER JOIN   Personne p on ct.Cotisation=p.idPersonne
      INNER JOIN   Site st on st.idSite=p.idSite
      group by monthname(ct.datedeFin),st.nomSite,ct.statut;
    Merci Encore

  5. #5
    Membre émérite
    Inscrit en
    août 2008
    Messages
    854
    Détails du profil
    Informations forums :
    Inscription : août 2008
    Messages : 854
    Points : 938
    Points
    938

    Par défaut

    Bonjour,

    Nombre de Cotisations par Site par Mois en fonction du Statut (de la Cotisation)
    A priori vous devez faire votre count sur id_cotisation, et grouper par mois, par site et par statut.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT 
               monthname(ct.datedeFin) AS  Mois, 
               st.nomSite, 
               ct.statut, 
               count(ct.idCotisation) AS nb_cotisations
      FROM Cotisation ct
      INNER JOIN   Personne p ON ct.Cotisation=p.idPersonne
      INNER JOIN   Site st ON st.idSite=p.idSite
      GROUP BY monthname(ct.datedeFin), st.nomSite, ct.statut;

  6. #6
    Nouveau Membre du Club
    Inscrit en
    octobre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 40
    Points : 26
    Points
    26

    Par défaut

    Bonjour
    Merci pour la Reponse
    J'arrive à afficher les donnés mais mon probleme
    c'est d'afficher tout les mois même si il ya pas de cotisations
    Exemple

    Encore Merci
    Images attachées Images attachées

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    janvier 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2010
    Messages : 3 100
    Points : 5 698
    Points
    5 698

    Par défaut

    Bonjour,

    Pour cela, vous pouvez faire une jointure externe sur des tables mois.

    SQLPro a ecrit un article à ce sujet : http://sqlpro.developpez.com/cours/gestiontemps/#L3

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro Alain
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    5 628
    Détails du profil
    Informations personnelles :
    Nom : Homme Alain
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 5 628
    Points : 13 737
    Points
    13 737

    Par défaut

    Tu cherches donc à afficher des informations qui n'existent pas dans ta table (des mois sans cotisation) ?
    Et où ton SGBD les trouverait-il alors ?

    Il te faut une table calendrier (avec au moins la liste des mois) sur laquelle tu feras une jointure externe.
    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.

  9. #9
    Nouveau Membre du Club
    Inscrit en
    octobre 2006
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : octobre 2006
    Messages : 40
    Points : 26
    Points
    26

    Par défaut

    Merci
    En Base j'ai pas une table Calendar
    j'utilise jsf pour choisir mes Dates et les persister
    J'espére qu' on pouvez jouer sur la date de fin pour afficher tout les mois
    mais je ne sais pas comment
    En core Merci
    Images attachées Images attachées

  10. #10
    Modérateur
    Avatar de al1_24
    Homme Profil pro Alain
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    5 628
    Détails du profil
    Informations personnelles :
    Nom : Homme Alain
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 5 628
    Points : 13 737
    Points
    13 737

    Par défaut

    En ajoutant à ton modèle une table des mois (numMois, nomMois) :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT  mth.nomMois
        ,   sit.nomSite
        ,   cot.statut
        ,   COUNT(cot.idCotisation)     AS nb_cotisations
    FROM    Liste_Mois  mth
        CROSS JOIN
            Site        sit
        INNER JOIN
            Personne    prs
            ON  sit.idSite      = prs.idSite
        LEFT JOIN   
            Cotisation cot
            ON  cot.Cotisation  = prs.idPersonne
            AND EXTRACT(MONTH FROM cot.datedeFin) = mth.numMois
    GROUP BY 
            mth.nomMois
        ,   sit.nomSite
        ,   cot.statut
    ;
    Tu auras ainsi pour chaque personne et chaque mois une ligne retournée, même s'il n'y a pas de cotisation correspondante.
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •