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 :

Problème de requête avec un GROUP BY


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut Problème de requête avec un GROUP BY
    Bonjour à tous.

    J'ai en HQL un souci plutôt gênant et je ne vois pas trop comment je peux m'en sortir...

    Je dois effectuer une requête ressemblant à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT o.name, avg(o.availability), count(o.availability), o.otherObject FROM Object o
    GROUP BY o.name, o.otherObject.code
    Seulement voilà, j'obtiens une erreur comme quoi mon GROUP BY n'est pas complet parce qu'il ne trouve pas o.otherObject tel quel dans le GROUP BY.

    Et bien entendu, si je remplace o.otherObject.code par o.otherObject comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT o.name, avg(o.availability), count(o.availability), o.otherObject FROM Object o
    GROUP BY o.name, o.otherObject
    J'obtiens une autre erreur m'indiquant que le GROUP BY n'est pas valide...

    Et bien entendu, j'ai besoin dans la réponse d'obtenir l'objet "otherObject" puisqu'il contient des données indispensables...
    Alors comment pourrais-je faire ?

    En utilisant Criteria, aucun souci, ça passe mais je ne peux pas l'utiliser car j'ai des bouts de clause where en DB... en HQL.

    Merci d'avance!

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    - Si tu connais précisément les champs dont tu as besoin et qu'ils sont en faible quantité, rajoute-les à la fois dans le SELECT et dans le GROUP BY.
    - Sinon, rajoute un étage avec la table Object qui récupère tout à partir de l'id ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut
    anotherObject contient en gros:

    - 1 code (PK)
    - 1 description en anglais
    - 1 description en français
    - 1 description en néerlandais

    Si je les ajoute dans mon group by, le résultat ne sera plus le même me semble-t'il.

    Au lieu de me renvoyer

    - autreDonnées CODE_A

    Il me renverra:

    - autreDonnées CODE_A DESCRIPTION_FR DESCRIPTION_NL DESCRIPTION_EN
    - autreDonnées CODE_A DESCRIPTION_FR DESCRIPTION_NL DESCRIPTION_EN
    - autreDonnées CODE_A DESCRIPTION_FR DESCRIPTION_NL DESCRIPTION_EN

    Non?

    Enfin bon c'est vrai que je peux alors utiliser un DISTINCT.
    EDIT: en fait non...

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    Si je me rappel bien tu ne peux faire un groupby que sur des champs qui sont dans le select.
    Après je ne connais pas du tout HQL mais je pense qu'un code comme le suivant devrai marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT o.name, avg(o.availability), count(o.availability), o.otherObject.code, o.otherObject FROM Object o GROUP BY o.name, o.otherObject.code

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut
    Et bien non malheureusement car il va me dire qu'il manque o.anotherObject dans le group by...

Discussions similaires

  1. Problème de requête avec un group by
    Par devalender dans le forum SQL
    Réponses: 6
    Dernier message: 02/04/2014, 19h14
  2. problème de requête avec utilisation de min/group by
    Par htristra dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 02/10/2007, 13h16
  3. Réponses: 3
    Dernier message: 11/10/2004, 17h26
  4. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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