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 :

Having Count en gardant la multiplicité de la rubrique comptée


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 18
    Points : 17
    Points
    17
    Par défaut Having Count en gardant la multiplicité de la rubrique comptée
    j ai une table ELEVE, une table RESPONSABLE et une table LIENER qui associe un élève à un responsable, un élève a forcément un responsable, un responsable peut ne pas avoir d'élève...
    J'aimerais lister les nom, prénoms des élèves et des responsables, des responsables qui ont par exemples au moins 3 élèves...
    J ai une requete qui marche mais elle est bien lente:
    SELECT
    ....ELEVE.NOM, ELEVE.PRENOM, RESPONSABLE.NOM, RESPONSABLE.PRENOM
    FROM
    ....ELEVE, RESPONSABLE, LIENER
    WHERE
    ....COM_RESPONSABLES.IDRESPONSABLE=COM_LIENER.IDRESPONSABLE
    ....AND COM_LIENER.IDELEVE=COM_ELEVES.IDELEVE
    ....AND COM_RESPONSABLES.IDRESPONSABLE IN
    ....(SELECT
    ........COM_RESPONSABLES.IDRESPONSABLE
    .....FROM
    ........ELEVE, RESPONSABLE, LIENER
    .....WHERE
    ........COM_RESPONSABLES.IDRESPONSABLE=COM_LIENER.IDRESPONSABLE
    ........AND COM_LIENER.IDELEVE=COM_ELEVES.IDELEVE
    ........GROUP BY COM_RESPONSABLES.IDRESPONSABLE
    ........HAVING COUNT(COM_RESPONSABLES.IDRESPONSABLE)>=3)

    Y aurait-il une méthode plus rapide?
    Le problème (en tout cas le mien) c'est que si je compte les idresponsables tout de suite, je suis obligé de faire un group by idresponsable qui me perd les informations annexes (noms prenom etc...)

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    En reprenant ta logique, tu peux simplifier un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT e.NOM, e.PRENOM, r.NOM, r.PRENOM
    FROM ELEVE e, RESPONSABLE r, LIENER er
    WHERE r.IDRESPONSABLE = er.IDRESPONSABLE
      AND er.IDELEVE = e.IDELEVE
      AND r.IDRESPONSABLE IN (SELECT IDRESPONSABLE
                              FROM LIENER
                              GROUP BY r.IDRESPONSABLE
                              HAVING COUNT(*) >= 3 )

Discussions similaires

  1. Requête SQL avec Having Count
    Par illight dans le forum Langage SQL
    Réponses: 9
    Dernier message: 22/10/2013, 14h00
  2. [2008R2] Indicateur équivalent having count(*)>1
    Par Dextro dans le forum SSAS
    Réponses: 4
    Dernier message: 23/09/2011, 15h37
  3. Utilisation de la clause SQL HAVING COUNT
    Par nicolasline dans le forum Designer
    Réponses: 4
    Dernier message: 17/02/2011, 22h57
  4. Having count Oracle 10
    Par jnauche dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/08/2008, 17h28
  5. [Sql]Having Count ( Distinct )
    Par nuke_y dans le forum Oracle
    Réponses: 5
    Dernier message: 20/02/2006, 21h36

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