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

Persistance des données Java Discussion :

OJB - group by


Sujet :

Persistance des données Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut OJB - group by
    Bonjour,

    J'aimerai générer la requête suivante en OJB et obtenir le résultat suivant.

    Tout d'abord voila la table de départ:

    annee | mois | code | Utilisateur | nombre1 | nombre2
    -----------------------------------------------
    2008 | 1 | 1 | ut1 | 5 | 10
    2008 | 2 | 1 | ut1 | 3 | 5
    2007 | 12 | 1 | ut1 | 1 | 8
    2008 | 2 | 1 | ut2 | 35 | 7
    2007 | 12 | 1 | ut2 | 8 | 4
    2007 | 11 | 1 | ut1 | 7 | 8

    voilà le résultat que j'attends:

    code | Utilisateur | SUM(nombre1) | SUM(nombre2)
    ----------------------------------------------------
    1 | ut1 | 4 (3+1) | 13 (5+8)

    qui se materialise par la requete suivante

    select code, utilisateur, SUM(nombre1) , SUM(nombre2) from table where code='1' and utilisateur='1' and (annee > 2007 or (annee = 2007 and mois >= 12 ) and (annee < 2008 or (annee = 2008 and mois <= 1 ) group by code,utilisateur order by code,utilisateur

    Pour le moment j'arrive à générer la requête suivante:

    select code, utilisateur, nombre1 , nombre2 from table where code='1' and utilisateur='1' and (annee > 2007 or (annee = 2007 and mois >= 12 ) and (annee < 2008 or (annee = 2008 and mois <= 1 ) order by code,utilisateur

    Il me manque, SUM et GROUP BY.

    Mon code est le suivant:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
            Criteria criteria = new Criteria();
     
     
            if (null != critere.getDateMin()) {
                Calendar calendarMin = new GregorianCalendar();
                calendarMin.setTime(critere.getDateMin());
                criteria.addSql((" (A0.SCO_ANNEE > " + calendarMin.get(Calendar.YEAR)) + " OR ( A0.SCO_ANNEE = " + calendarMin.get(Calendar.YEAR)
                        + " AND A0.SCO_MOIS >= " + (calendarMin.get(Calendar.MONTH) + 1) + " )) ");
            }
            if (null != critere.getDateMax()) {
                Calendar calendarMax = new GregorianCalendar();
                calendarMax.setTime(critere.getDateMax());
                criteria.addSql((" (A0.SCO_ANNEE < " + calendarMax.get(Calendar.YEAR)) + " OR ( A0.SCO_ANNEE = " + calendarMax.get(Calendar.YEAR)
                        + " AND A0.SCO_MOIS <= " + (calendarMax.get(Calendar.MONTH) + 1) + " )) ");
            }
            if (null != critere.getCode() && critere.getCode().length() != 0) {
                       criteria.addEqualTo("code",  critere.getCodeSite());
            }
            if (null != critere.getUtilisateur() && critere.getUtilisateur().length() != 0) {
                     criteria.addEqualTo("Utilisateur", critere.getUtilisateur());
            }
     
            QueryByCriteria queryByCriteria = new QueryByCriteria(StatistiquesCommande.class, criteria);
     
            queryByCriteria.addOrderByAscending("code");
            queryByCriteria.addOrderByAscending("Utilisateur");
     
     
            return ((Collection) broker.getCollectionByQuery(queryByCriteria));
    Merci pour votre aide....

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut
    Personne ne peux m'expliquer comment modifier une requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select champ, nombre from table
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select champ, sum(nombre) from table group by champ
    en OJB???

    merci...

  3. #3
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    queryByCriteria.addGroupBy("champ");

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut
    merci pour ta reponse mais cela ne m'ajoute pas le sum(nombre)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut
    Voilà la solution...

    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
    20
    21
    22
        public Collection rechercher(PersistenceBroker broker) {
            Criteria criteria = new Criteria();
     
            ReportQueryByCriteria q = QueryFactory.newReportQuery(StatistiquesCommande.class, criteria);
            q.setAttributes(new String[] { "CODE","IDUSER", "sum(NBRCMDPREP)", "sum(NBRCMD)" });
            q.addGroupBy("CODESITE");
            q.addGroupBy("IDUSER");
            q.addOrderByAscending("CODESITE");
            q.addOrderByAscending("IDUSER");
     
            Collection results = new ArrayList();
            Iterator iter = broker.getReportQueryIteratorByQuery(q);
            while (iter.hasNext()) {
                Object[] stat = (Object[]) iter.next();
                Statistiques statistiques = new Statistiques();
                statistiques.setCode((String) stat[0]);
                statistiques.setUtilisateur((String) stat[1]);
                statistiques.setNombreCommandesPreparees(((BigDecimal) stat[2]).intValue());
                statistiquesCommande.setNombreCommandes(((BigDecimal) stat[3]).intValue());
                results.add(statistiques);
            }
            return results;
    ++

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

Discussions similaires

  1. [CR8] Groupes nommés par ordre spécifié
    Par PschittN dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/05/2004, 23h46
  2. Selection de Groupes ki ne sont pas sous groupes...
    Par superdada dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/07/2003, 14h42
  3. [RaveReport] - Bloquer groupe sur une page
    Par muaddib dans le forum Rave
    Réponses: 3
    Dernier message: 25/02/2003, 16h21
  4. gestion des groupes
    Par muaddib dans le forum QuickReport
    Réponses: 3
    Dernier message: 31/12/2002, 11h01

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