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 multi tables


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Points : 154
    Points
    154
    Par défaut Problème de Count multi tables
    Bonsoir tout le monde,

    J'ai un petit problème de rédaction de requête SQL et je trouve pas la solution, ça serait sympa si quelqu'un pouvait m'aider .

    Mon schéma est en pièce joint au message.

    En gros, j'aimerais obtenir (en une seule requête) une liste des catégories de permissions (id et nom de la catégorie) avec le nombre d'applications qui ont au moins une permission dans cette catégorie.

    Disons les permission P1, P2, P3, P4 et les catégories C1, C2.
    P1,P2 ==> C1
    P3,P4 ==> C2

    L'application A1 utilise P1, P2, P3, P4
    L'application A2 utilise P1, P2
    L'application A3 utilise P1

    J'aimerais avoir comme résultat :
    Catégorie C1, 3 applications
    Catégorie C2, 1 application

    J'en suis arrivé à la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT id AS _id, category.name || ' (' || Count(application) || ')' AS name 
    FROM category 
    LEFT OUTER JOIN relation_category_permission ON category.id = relation_category_permission.category 
    INNER JOIN relation_application_permission ON relation_category_permission.permission = relation_application_permission.permission 
    GROUP BY category.id;
    Alors ça m'affiche bien chaque catégorie mais la quantité d'application est complètement fausse.

    Une idée de correction ?

    Merci d'avance et bonne soirée !!!

    PoZZyX
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    Rajoutez un distinct dans votre count.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT id AS _id, category.name || ' (' || Count(distinct application) || ')' AS name 
    FROM category 
    LEFT OUTER JOIN relation_category_permission ON category.id = relation_category_permission.category 
    INNER JOIN relation_application_permission ON relation_category_permission.permission = relation_application_permission.permission 
    GROUP BY category.id;

    Ensuite votre left outer join va être transformé en inner join car vous avez un inner join qui s'effectue sur votre table relation_category_permission.

    Mais au vue de votre demande initiale :
    En gros, j'aimerais obtenir (en une seule requête) une liste des catégories de permissions (id et nom de la catégorie) avec le nombre d'applications qui ont au moins une permission dans cette catégorie.
    je transformerai tout ca en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT id AS _id, category.name || ' (' || Count(distinct application) || ')' AS name 
    FROM category 
    INNER JOIN relation_category_permission ON category.id = relation_category_permission.category 
    INNER JOIN relation_application_permission ON relation_category_permission.permission = relation_application_permission.permission 
    GROUP BY category.id;

  3. #3
    Membre habitué Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Points : 154
    Points
    154
    Par défaut
    Merci, je venais de trouver j'étais en train de venir poster

    Merci et bonne journée

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

Discussions similaires

  1. Problème de requête multi tables
    Par arnold002 dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/03/2010, 08h24
  2. problème update multi-tables
    Par steevest dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/10/2009, 11h44
  3. Count avec clause where multi table
    Par james_kirk dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/01/2008, 17h35
  4. problème de requête multi-table
    Par dergips dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/07/2007, 18h21
  5. Problème DELETE multi-tables
    Par Gwipi dans le forum Requêtes
    Réponses: 5
    Dernier message: 22/05/2006, 08h48

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