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

Oracle Discussion :

Problème requêtes imbriquées sous HQL


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mars 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 9
    Par défaut Problème requêtes imbriquées sous HQL
    Salut tout le monde !

    J'ai un problème de requêtes imbriquées qui ne passent pas dans hql, ça marche bien dans Oracle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT cal.dateItem
         , COALESCE(base, 0) AS base
    FROM (SELECT level + to_date('20/04/2012','dd/MM/yyyy') - 1 AS dateItem FROM dual
    connect BY level < to_date('30/04/2012','dd/MM/yyyy') - to_date('20/04/2012','dd/MM/yyyy') + 2) cal 
      LEFT JOIN 
        ( SELECT DATE_PREPARATION
               , COUNT(*) AS base
          FROM REQUEST r, AUTHORITY x 
          WHERE r.NAME = x.NAME
          and x.INVOICE = 'Invoice1'
          AND r.SCAN<>0
          GROUP BY r.DATE_PREPARATION
        ) Tbase
        ON to_char(Tbase.DATE_PREPARATION,'dd/MM/yyyy')= to_char(cal.dateItem,'dd/MM/yyyy')
    Cette requête marche bien dans Oracle, il donne le count(*) des produit dans les dates contenant entre l'interval selectionné ( 20/04/2012 - 30/04/2012 ).

    J'ai fait des recherches mais il semble que le "Senior" hql n'accepte pas des sous requetes apres from ( seulement apres select et where )

    Comment la modifier pour qu'il marche sous HQL ?

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Et bien le moyen le plus simple c'est de ne pas faire de sous-requête.

    Vous pouvez :
    1. implémenter une table calendrier dans votre base de données, ça vous évitera d'en générer un bout à chaque exécution
    2. mettre le contenu de votre requête dans une vue et interroger celle-ci via HQL

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Par défaut
    Bonjour,

    C'est le HQL et SQL qui pose problème.
    ex. : FROM dual, to_date()


    Citation Envoyé par shessuky Voir le message
    Salut tout le monde !

    J'ai un problème de requêtes imbriquées qui ne passent pas dans hql, ça marche bien dans Oracle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT cal.dateItem
         , COALESCE(base, 0) AS base
    FROM (SELECT level + to_date('20/04/2012','dd/MM/yyyy') - 1 AS dateItem FROM dual
    connect BY level < to_date('30/04/2012','dd/MM/yyyy') - to_date('20/04/2012','dd/MM/yyyy') + 2) cal 
      LEFT JOIN 
        ( SELECT DATE_PREPARATION
               , COUNT(*) AS base
          FROM REQUEST r, AUTHORITY x 
          WHERE r.NAME = x.NAME
          and x.INVOICE = 'Invoice1'
          AND r.SCAN<>0
          GROUP BY r.DATE_PREPARATION
        ) Tbase
        ON to_char(Tbase.DATE_PREPARATION,'dd/MM/yyyy')= to_char(cal.dateItem,'dd/MM/yyyy')
    Cette requête marche bien dans Oracle, il donne le count(*) des produit dans les dates contenant entre l'interval selectionné ( 20/04/2012 - 30/04/2012 ).

    J'ai fait des recherches mais il semble que le "Senior" hql n'accepte pas des sous requetes apres from ( seulement apres select et where )

    Comment la modifier pour qu'il marche sous HQL ?

    Merci d'avance !

Discussions similaires

  1. [MySQL] Problème requête imbriquée
    Par Little_flower dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/08/2007, 19h58
  2. requêtes imbriquées sous Access
    Par Smix007 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 19/06/2007, 15h37
  3. Problème requêtes imbriquées
    Par jean-paul lepetit dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 20/03/2007, 11h32
  4. Problème Requête Imbriquée
    Par PaulPersonne820 dans le forum Hibernate
    Réponses: 1
    Dernier message: 31/01/2007, 23h40
  5. Problème Requête imbriquée
    Par EddieN dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/10/2006, 08h52

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