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 :

Clause HAVING qui ne contient pas l'attribut du GROUP BY


Sujet :

Langage SQL

  1. #1
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut Clause HAVING qui ne contient pas l'attribut du GROUP BY
    salut,
    est ce qu'on peut utiliser la clause HAVING sans spécifier l'attribut de la clause GROUP BY ?
    comme exemple je donne cet exemple de requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select ncl from commande c, ligne_commande lc 
    where c.nc = lc.nc
    group by ncl
    having count(nart)=....
    ici l'attribut nart n'est pas spécifié dans la clause groupby
    merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    HAVING est fait pour filtrer sur la valeur d'un agrégat, la réponse est donc non : il faut dans ce cas filtrer dans la clause WHERE (ou dans la clause JOIN si la restriction porte sur une colonne d'une table OUTER.

    Note : certains SGBD acceptent toutefois cette syntaxe (ex : SQLite)

  3. #3
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    HAVING est fait pour filtrer sur la valeur d'un agrégat
    bonjour,

    c'est déjà le cas non ?

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    En effet j'ai répondu un peu vite : la colonne de la clause having n'étant pas dans la clause select, en ce cas c'est valide

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    En effet j'ai répondu un peu vite : la colonne de la clause having n'étant pas dans la clause select, en ce cas c'est valide
    Je ne vois pas bien le rapport, elle pourrait être dans le select et ce serait valide aussi.
    C'est exactement comme faire select a, b from t where c = 1; on n'a pas besoin de projeter l'expression qui sert de filtre.

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

Discussions similaires

  1. html:checkbox qui n'interprete pas un attribut
    Par gloglo dans le forum Struts 1
    Réponses: 1
    Dernier message: 20/03/2007, 10h03
  2. Réponses: 3
    Dernier message: 20/02/2007, 15h48
  3. clause EXCEPT qui ne marche pas
    Par Platon93 dans le forum Access
    Réponses: 3
    Dernier message: 26/11/2006, 14h21
  4. un module qui ne contient pas une fonction qu'il contient :?
    Par duplo dans le forum Général Python
    Réponses: 12
    Dernier message: 15/08/2006, 19h30
  5. [SQL2K] Clause IF qui ne marche pas ?
    Par Negaton dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/08/2006, 14h40

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