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 clause distinct et count


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 30
    Points
    30
    Par défaut Requête HQL avec clause distinct et count
    Bonjour je suis sous Hibernate 3 et oracle 10g et j'ai la requête HQL suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT count(distinct cert.numSerieCertif,cert.numSerieCertif)
    FROM Certificat as cert
    WHERE cert.numeroCarte IS NOT NULL
    AND cert.dateDebutValid <= to_date(:synchroTime,'DD/MM/YYYY HH24:MI:SS')
    AND cert.dateFinValid > to_date(:synchroTime,'DD/MM/YYYY HH24:MI:SS')
    AND cert.datePublication IS NULL
    AND cert.dateRevocation IS NULL
    AND cert.typeIdentifiant IN (0, 2, 8, 9)
    AND exists(SELECT caP.numeroLogiqueCarte
    	 FROM CartePhysique as caP
    	 WHERE caP.carteAnonyme = '0'
    	 AND caP.numeroLogiqueCarte = cert.numeroCarte)
    Or le problème est qu'il me sort l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    line 3:67: expecting CLOSE, found ','
    Error in named query: count.add.select.lots.certificat.ps
    org.hibernate.hql.ast.QuerySyntaxException: expecting CLOSE, found ',' near line 3, column 67
    Auriez-vous une idée de comment résoudre cela ???

    J'ai essayé aussi de faire SELECT count(distinct cert.numSerieCertif || cert.numSerieCertif) ... mais ça ne marche pas mieux !

  2. #2
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Pourquoi un distinct de 2 colonnes identiques , pourquoi pas une seule colonne?
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    Heu oui en fait c'est bien 2 colonnes différentes !!!

    J'ai mal fait mon copier-coller je pense ...

    C'est SELECT count(distinct cert.numSerieCertif,cert.numeroCarte) en fait !


  4. #4
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Dis nous quand tu mets mets distinctes sur 2 colonnes, sachant que la fonction count renvoie un entier, que veux tu en sortie ?
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    Et bien en fait il faut que je renvoie le nombre de couple (numSerieCertif,numeroCarte) différents de la table CERTIFICAT !

    Ex :

    numSerieCertif.....numeroCarte.....autreChamps
    123..................369..................truc1
    123..................369..................truc2
    124..................370..................truc3
    125..................371..................truc4

    Ma requête doit me retourner dans ce cas : 3 !!!

    Merci d'avoir répondu en tout cas !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 476
    Points : 595
    Points
    595
    Par défaut
    org.hibernate.hql.ast.QuerySyntaxException: expecting CLOSE, found ',' near line 3, column 67
    Tu utilises deux arguments pour ta fonction count(). Or,elle ne peut prendre qu'un paramètre à ma connaissance. D'où l'erreur "expecting CLOSE". Il attend la parenthèse pour fermer la parenthèse ouverte par count mais toi tu lui donnes une virgule.

    count(distinct cert.numSerieCertif || cert.numSerieCertif)
    Je pense pas non plus que tu aies le droit de faire ca.

    Essaye ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select count(distinct(cert1.numSerieCertif))
    from certificat cert1, certificat cert2
    where  ( cert1.numSerieCertif != cert2.numSerieCertif OR  cert1.numeroCarte != cert2.numeroCarte )
    Ils flottent tous en bas

Discussions similaires

  1. Problème requête HQL avec Like
    Par kakahn dans le forum Hibernate
    Réponses: 3
    Dernier message: 27/03/2013, 15h56
  2. [AC-2007] Requête DELETE * avec clause WHERE
    Par al_bert dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 13/05/2009, 17h03
  3. Syntaxe Requette Hql avec clause IN
    Par lionel84 dans le forum Hibernate
    Réponses: 2
    Dernier message: 03/10/2008, 12h17
  4. Requête récalcitrante avec un tri par COUNT sans GROUP BY
    Par Ancalagon77 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/10/2006, 14h27
  5. requête sql avec clause INNER JOIN
    Par new_wave dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/08/2005, 15h47

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