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

SQL Oracle Discussion :

Problème requête Oracle


Sujet :

SQL Oracle

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 Problème requête Oracle
    Bonjour, dans une table, j'ai des date de pointage, j'ai essayé de regrouper ces pointages par semaine et j'ai calculé le cumul d'heure de chaque semaine, chque pointage peut etre valide ou non valide, si tout les pointage sont valide alors la semaine est valide j'ai mis la requete suivante qui marche avec succés mais j'ai un problème :

    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
    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);
    		GregorianCalendar c = new GregorianCalendar(Locale.FRANCE);
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
     
    		while(rs.next()){
    			CumulPointage cp =new CumulPointage();
    			cp.setNumSemaine(rs.getInt("NUM_SEMAINE"));
    			cp.setCumul(rs.getInt("cum"));
     
    			cp.setIdRessource(idr);
     
    			if((rs.getInt("lg")==1) ){
    				cp.setStatut("Valide");
    			}
    			else cp.setStatut("Non Valide");
    		    cp.setDds(rs.getDate("DEBUT_SEMAINE"));
     
    		    c.setTime(cp.getDds());
    		    int year = c.get(Calendar.YEAR);
    		    cp.setAnnee(year);
    		    cp.setDonnee(cp.getNumSemaine()+"/"+cp.getAnnee());
    		    cp.setDfs(rs.getDate("FIN_SEMAINE"));
     
    		    list.add(cp);
    		}
    	   }
    	   catch (Exception e) {
    		e.printStackTrace();
    	}
    		return list;	
    	}
    la je teste si le lg est egal à 1 je met la semaine a valide sinon a non valide,
    mais le problème c'est que le lg peut avoir la valeur 1 mais tout les pointage sont à non valide, vous avez une idée ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Par défaut
    Suggestion : revenir à la bonne vieille théorie des ensembles.

    Premier ensemble : tous les couples semaine/ressource
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select distinct num_semaine , id_ressource
    from GPL_POINTAGES
    where id_ressource = :idr ;
    Second ensemble : les couples semaine/ressource qui possèdent (au moins) un pointage non valide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT DISTINCT num_semaine , id_ressource
    FROM GPL_POINTAGES
    WHERE statut <> 'VALIDE'  -- vérifier la valeur hardcodee
    AND   id_ressource = :idr ;
    --> Solution : Différence entre le premier ensemble et le seconde ensemble = couples semaine/ressource qui possèdent uniquement des pointages valides.

    Techniquement, j'essaierai en premier lieu
    + une query MINUS
    + une query basée sur les deux select avec un OUTER JOIN

    Conseil : vérifier les plans d'exécution pour choisir la solution plus performante puisque cela dépend de ton environnement (index, population de la table, ...).

Discussions similaires

  1. Incompréhensible : problème requête Oracle 9i
    Par mithrendil dans le forum JDBC
    Réponses: 2
    Dernier message: 18/09/2014, 14h51
  2. Problèmes avec requêtes Oracle sous Cron Unix
    Par wahabbad dans le forum Oracle
    Réponses: 1
    Dernier message: 02/08/2011, 13h21
  3. Problème requête SELECT ORACLE
    Par vizlebiz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2008, 16h20
  4. [Oracle] Problème requête somme
    Par baptus dans le forum Langage SQL
    Réponses: 24
    Dernier message: 23/03/2006, 08h33
  5. Réponses: 6
    Dernier message: 20/09/2004, 15h26

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