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 :

[HQL] Aide sur une requête


Sujet :

Hibernate Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Points : 8
    Points
    8
    Par défaut [HQL] Aide sur une requête
    Bonjour,

    J'ai un petit problème avec une requête HQL et je n'arrive pas bien à comprendre d'ou ça vient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    executeHqlQuery("SELECT DISTINCT profilVoie.id FROM ProfilVoie profilVoie
    WHERE profilVoie.dispositifDeRetenueGauche.hauteur>5 OR profilVoie.dispositifDeRetenueDroit.hauteur>5");
    Le problème est qu'un ProfilVoie pour lequel le champs dispositifDeRetenueGauche ou dispositifDeRetenueDroit est null (et même si l'autre dispositif répond au critère) ne sera pas renvoyé dans la liste des résultats.

    J'ai essayé quelques trucs comme ajouter une condition de non nullité avant de tester la hauteur mais ca n'a rien changé, la seule solution que j'ai trouvé c'est de faire ça avec des requêtes imbriquées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    executeHqlQuery("SELECT DISTINCT profilVoie.id FROM ProfilVoie profilVoie WHERE profilVoie.id IN 
    (SELECT DISTINCT profilVoie.id FROM ProfilVoie profilVoie WHERE profilVoie.dispositifDeRetenueGauche.hauteur>5) 
    OR profilVoie.id IN 
    (SELECT DISTINCT profilVoie.id FROM ProfilVoie profilVoie WHERE profilVoie.dispositifDeRetenueDroit.hauteur>5)");
    C'est pas vraiment gênant comme solution mais ça ajoute quand même pas mal de code, c'est moins optimisé, et j'aimerais bien comprendre le problème de la première requête aussi en fait vu que le cas n'est pas si rare.

    Voila merci d'avance.
    Laurent.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Et avec quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select distinct profilVoie.id
    from ProfilVoie profilVoie left join profilVoie.dispositifDeRetenueGauche gauche left join profilVoie.dispositifDeRetenueDroit droit
    where gauche.hauteur>5 or droit.hauteur>5

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Hmm effectivement ça marche merci

    J'avais essayé avec des "join" tout court plus tôt mais j'avais le même problème, par contre j'avais pas testé avec des "left join" :p vas falloir que je revois mes cours de sql

    Encore merci et ++

Discussions similaires

  1. [SQL] Besoin d'aide sur une requête
    Par Angath dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/01/2006, 16h26
  2. Réponses: 1
    Dernier message: 03/08/2005, 11h41
  3. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 10h29
  4. Aide sur une requête
    Par TshAw dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2005, 11h42
  5. Aide sur une requête (Group By...??)
    Par Cocolapin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/12/2004, 10h26

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