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 :

Requête hql avec select imbriqué


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 134
    Points : 77
    Points
    77
    Par défaut Requête hql avec select imbriqué
    Bonjour,
    Est-il possible de faire quelque chose comme ceci avec une requête HQL:

    select * from (select * from matable)

    Bien sûr ma requête est un peu plus intelligente que ça mais c'est juste pour l'exemple

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    non, ce n'est pas autorisé ni en SQL ni en HQL.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 134
    Points : 77
    Points
    77
    Par défaut
    Désolé de te contredire mais c'est tout à fait autorisé en SQL.

    Je crois qu'il est recommandé de nommer la table destination par contre:
    Ca donnerait donc plutôt ça en SQL:

    select * from (select * from table_src) table_dest

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    erf oui, mais ca ne fait pas ce qu'il pense manifestement que ça fait (prendre les noms présent dans table_src, comme T1,T2,T3, et faire un select * from T1,T2,T3

    select * from (select * from table_src); c'est exactement la même chose que faire select * from table_src

  5. #5
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Si le but est de choisir les noms de table, ça peut se faire mais pas directement; en fait ça se fait en PL/SQL (et en hibernate, ça se ferait en faisant une première requête, et en générant à partir d'icelle une deuxième).

    Si la question était "peut-on faire un sous-select standard", la réponse est oui.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 134
    Points : 77
    Points
    77
    Par défaut
    Si la question était "peut-on faire un sous-select standard", la réponse est oui.
    Oui c'est bien la question.
    Maintenant j'en ai une 2ème: Comment?

  7. #7
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Comme en SQL, mais en HQL ... Je ne vois pas comment décrire mieux.

    http://docs.jboss.org/hibernate/core...hql-subqueries

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 134
    Points : 77
    Points
    77
    Par défaut
    Je ne dois vraiment pas être doué en HQL parce que n'arrive pas à écrire la requête.
    J'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select t2.id from (select t1.id from matable as t1) as t2
    Sans succès :'(

    je précise que id est une colonne appartenant à matable.

    Rei Ichido, dans les exemples de ton lien, tous les sous-select ont lieu après le where. Moi, je veux faire le sous-select juste après le from (pour le gérer en tant que sous-table en gros).

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Points : 60
    Points
    60
    Par défaut
    On ne peut pas faire de sous-requête en Hql apres le from...
    Uniquement apres select et where....


    issu du document joint dans le post plus haut....
    "Note that HQL subqueries can occur only in the select or where clauses. "

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 134
    Points : 77
    Points
    77
    Par défaut
    OK, comme ça je suis fixé au moins.
    A la Poubelle Hibernate.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    notez que c'est assez logique dans le sens ou HQL fait ses requetes sur sur des Objets, or le résultat de votre sous requete n'est pas nécessairement un objet Hibernate

    Vous pouvez toujours aussi faire des sous requetes en SQL à partir d'hibernate (via les natvie query). Vous n'aurez plus le résultat sous forme d'objet, mais de toutes facons, ca ne correspondait déjà plus à des objets

Discussions similaires

  1. Requête CASE avec SELECT imbriqué
    Par pperrin dans le forum SQL
    Réponses: 2
    Dernier message: 03/10/2011, 11h18
  2. optimisation de requête sql avec select imbriquées
    Par yassine_le_boss dans le forum SQL
    Réponses: 6
    Dernier message: 02/11/2010, 22h12
  3. Requête avec select imbriqué
    Par Isiker dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/08/2010, 17h45
  4. [Delphi6,Access] Requête update avec select imbriqué
    Par magicstar dans le forum Débuter
    Réponses: 3
    Dernier message: 30/03/2009, 19h40
  5. Requete Update avec Select imbriqué: etrange resultat!
    Par corentone dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/08/2007, 15h05

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