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

Langage SQL Discussion :

Problème de count dans un where


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut Problème de count dans un where
    Bonjour, je travaille sous une base de donnée HSQL, avec java.
    Dans ma base, je cherche a savoir parmi certain utilisateurs ceux qui ont moins de 10 actions
    Mes utilisateurs sont dans la table user, et les actions dans la table action.
    Donc je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT
             ACTION.T_USER_ID 
    FROM 
             ACTION INNER JOIN USER 
             ON 
             ACTION.T_USER_ID = USER.T_USER_ID  
    WHERE(  
             USER.T_GROUPE_ID =  groupe
             AND  
             COUNT(ACTION.T_USER_ID) <   10)
    Le problème est que cette requete est refusé par java, generant l'exception
    :
    java.sql.SQLException: Not a condition

    Donc, je voudrais savoir :
    Est il bien possible de mettre un count comme condition ? Si oui pourquoi est ce que ma requete queute ? Si non, comment puis je faire pour repondre a mon problème.

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour,

    Quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    WHERE
             ACTION.T_USER_ID EXISTS (
                                                    SELECT
                                                             ACTION.T_USER_ID
                                                           , COUNT(ACTION.T_USER_ID)
                                                    FROM ...
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Mhh merci mais je ne comprend pas très bien, a quel moment je précise que le count doit est inférieur a 10 ?

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Dans la sous requête...
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  5. #5
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Salut,
    il me semble que cette requête devrait t'amener au résultat voulu (sauf erreur de ma part) et est peut être plus simple a comprendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ACTION.T_USER_ID 
    FROM ACTION INNER JOIN USER 
             ON ACTION.T_USER_ID = USER.T_USER_ID  
    WHERE USER.T_GROUPE_ID =  groupe
    GROUP BY ACTION.T_USER_ID
    HAVING COUNT(ACTION.T_USER_ID) <   10
    Mais n'hésitez a me corriger si je me trompe...

  6. #6
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    @chtulhus : exists évalue le prédicat "renvoie au moins une ligne". Il ne prend pas d'opérande gauche (à part des connecteurs logiques...)

    @Lola et Djobird : oui, et pour la petite histoire :
    Quand tu veux évaluer une fonction d'agrégat (genre une somme, un count, une moyenne, ...), il faut que tu définisses les groupes sur lesquels il va s'appliquer : GROUP BY
    Le WHERE ne peut servir qu'à définir des contraintes unitaires sur des lignes, et non sur les résultats obtenus par groupement. Evaluer des conditions sur ce genre de grandeurs se fait dans HAVING.

    Voilà voilà, j'ai encore servi à rien du tout...

  7. #7
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Citation Envoyé par pacmann Voir le message
    Voilà voilà, j'ai encore servi à rien du tout...
    Pas du tout, tu as dit pourquoi le count ne marchait pas dans le where, ce que j'ai oublié de faire (malgré mon intention)...

  8. #8
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Et moi j'en ai pris une bonne...
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  9. #9
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Mhh voila le truc, je pensais pourtant qu'un GROUP BY n'était pas necessaire dans cette condition, mais y repensant, je me demande comment j'ai pu penser ca. Merci bien ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de count dans une requête HQL
    Par yucf_miagiste dans le forum Hibernate
    Réponses: 0
    Dernier message: 30/11/2010, 15h32
  2. [MySQL] Problème de variable dans instruction WHERE
    Par ripout dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/08/2010, 11h21
  3. [AC-2007] Problème requête count dans VBA ACCESS
    Par carophil dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 02/06/2010, 17h11
  4. Problème du count dans une relation ManyToMany
    Par Invité dans le forum Général Java
    Réponses: 0
    Dernier message: 10/05/2010, 13h58
  5. Problème de count dans jointure
    Par metfan dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/08/2007, 10h58

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