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

Hibernate Java Discussion :

plusieurs requetes avec un seule while (requete.next)


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 372
    Par défaut plusieurs requetes avec un seule while (requete.next)
    Bonjour, dans une application de pointage, j'ai une classe java contenant : num semaine/an, debut semaine, fin semaine, date realisation d'une tache,satut, duree de la tache : chaque pointage a un statut qui peut etre valide, non valide, rejeté, je dois calculé pour chaque utilisateur le culmul d'heure travaillé, le cumul d'heure rejeté, non validé, valide, pour cela je fais plusieurs requete qui me retourne exactement ce que je veux, mais j'ai un problème avec le while(requete.next), sacahnt que j'ai pas pu regroupé toutes ces informations dans une seule requete,

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    public List getPointageParRessourceConnecte(Long idr){
    	   List<CumulPointage> list=new Vector<CumulPointage>();
    	   try{
    		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
     
    		ResultSet rnv = session.connection().createStatement().executeQuery("select NUM_SEMAINE,STATUT,ID_RESSOURCE," +
    				"sum(DUREETACHE)as cumnv from GPL_POINTAGES group by NUM_SEMAINE,STATUT,ID_RESSOURCE " +
    				"having STATUT = 'Non valide' and ID_RESSOURCE="+idr);
     
    		ResultSet rv = session.connection().createStatement().executeQuery("select NUM_SEMAINE,STATUT,ID_RESSOURCE," +
    				"sum(DUREETACHE)as cumv from GPL_POINTAGES group by NUM_SEMAINE,STATUT,ID_RESSOURCE " +
    				"having STATUT = 'Valide' and ID_RESSOURCE="+idr);
     
    		ResultSet rj = session.connection().createStatement().executeQuery("select NUM_SEMAINE,STATUT,ID_RESSOURCE," +
    				"sum(DUREETACHE)as cumj from GPL_POINTAGES group by NUM_SEMAINE,STATUT,ID_RESSOURCE " +
    				"having STATUT = 'Rejeté' and ID_RESSOURCE="+idr);
     
    		ResultSet rs=session.connection().createStatement().executeQuery("select NUM_SEMAINE, DEBUT_SEMAINE," +
    				" FIN_SEMAINE,ID_RESSOURCE,sum(DUREETACHE)as cum, count(distinct STATUT) as lg from GPL_POINTAGES " +
    				"group by NUM_SEMAINE, DEBUT_SEMAINE,FIN_SEMAINE,ID_RESSOURCE having ID_RESSOURCE="+idr);
     
    		while(rs.next()){
    			CumulPointage cp =new CumulPointage();
    			cp.setNumSemaine(rs.getInt("NUM_SEMAINE"));
    			cp.setCumul(rs.getInt("cum"));
    			cp.setCumulnv(rnv.getInt("cumnv"));
    			cp.setCumulv(rv.getInt("cumv"));
    			cp.setCumulj(rj.getInt("cumj"));
    			cp.setIdRessource(idr);
     
    		    cp.setDds(rs.getDate("DEBUT_SEMAINE"));
    		    cp.setDfs(rs.getDate("FIN_SEMAINE"));
     
    		    list.add(cp);
    		}
    	   }
    	   catch (Exception e) {
    		e.printStackTrace();
    	}
    		return list;	
    	}

    pour que je puisse récupéré mes informations que dois je faire dans le while ?

    Est ce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(rs.next() && rnv.next() && rv.next() && rj.next())

    Veuillez m'aider !

  2. #2
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 14
    Par défaut
    si j'ai bien compris ce que tu veux ceci devrait résoudre ton problème.
    Il s'agit plutôt de transformer ton sql:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT NUM_SEMAINE,STATUT,ID_RESSOURCE,
      (SELECT sum(DUREETACHE) FROM GPL_POINTAGES group by NUM_SEMAINE,STATUT,ID_RESSOURCE having STATUT = 'Non valide' and ID_RESSOURCE=idr) as cumnv,
      (SELECT sum(DUREETACHE) FROM GPL_POINTAGES group by NUM_SEMAINE,STATUT,ID_RESSOURCE having STATUT = 'Valide' and ID_RESSOURCE=idr) as cumv,
      (SELECT sum(DUREETACHE) FROM GPL_POINTAGES group by NUM_SEMAINE,STATUT,ID_RESSOURCE having STATUT = 'Rejeté' and ID_RESSOURCE=idr) as cumj,
      (SELECT DEBUT_SEMAINE from GPL_POINTAGES group by NUM_SEMAINE, DEBUT_SEMAINE, FIN_SEMAINE,ID_RESSOURCE having ID_RESSOURCE=idr) as DEBUT_SEMAINE,
      (SELECT FIN_SEMAINE from GPL_POINTAGES group by NUM_SEMAINE, DEBUT_SEMAINE, FIN_SEMAINE,ID_RESSOURCE having ID_RESSOURCE=idr) as FIN_SEMAINE,
      (SELECT sum(DUREETACHE) from GPL_POINTAGES group by NUM_SEMAINE, DEBUT_SEMAINE, FIN_SEMAINE,ID_RESSOURCE having ID_RESSOURCE=idr) as cum,
      (SELECT count(distinct STATUT) lg from GPL_POINTAGES group by NUM_SEMAINE, DEBUT_SEMAINE, FIN_SEMAINE,ID_RESSOURCE having ID_RESSOURCE=idr) as lg
    from GPL_POINTAGES where ID_RESSOURCE=idr
    Seulement je ne sais pas si ce n'est pas trop lourd comme requête pout toi et si ton SGBD accepte ce genre de syntaxe (sur oracle je sais que ça passe)
    Peut-être devrais-tu poster ta question sur le forum SGBD ou SQL ...

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 372
    Par défaut
    je travaille avec Oracle, mais justement est ce que cette requete ne sera pas lourde dans le traitement ?

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 372
    Par défaut
    la requete ne marche pas

  5. #5
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 14
    Par défaut
    désolé, je t'ai un peu oublié...
    Peux-tu me dire ce que tu as exactement comme erreur car ça devrait marcher. J'utilise ce genre de syntaxe avec Oracle.
    Je n'ai ni testé ni vérifié la syntaxe de la requête que je te propose mais normalement ça devrait fonctionner.
    Quelle version d'Oracle utilises-tu?

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 372
    Par défaut
    merci, j'ai essayé autrement en persistant mes donnée !

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

Discussions similaires

  1. [XL-2007] Imprimer plusieurs onglets avec une seule requete
    Par Leithz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2011, 12h59
  2. Requete avec un seul mot recherché dans tous les champs
    Par ju0123456789 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/05/2009, 14h42
  3. regrouper plusieurs champ dans un seul en requete
    Par Nicko29 dans le forum Access
    Réponses: 12
    Dernier message: 07/09/2005, 18h29
  4. plusieurs tables avec un seul DBnavigator et DBGRID
    Par warrior dans le forum Bases de données
    Réponses: 8
    Dernier message: 07/06/2005, 08h12
  5. Plusieurs commandes avec 1 seule R-commande
    Par pouldo dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 01/04/2005, 18h44

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