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

Requêtes MySQL Discussion :

Problème SUM avec CASE


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Problème SUM avec CASE
    Bonjour,

    j'ai quatre tables
    User,
    Profile,
    Ticket,
    group
    avec des table intermédaires pour chaque. J'aimerai compter le nombre tickets par utilisateur qui sont en attentes, par date de création.
    Mais j'ai trop de réponse (trop de ticket).
    Du coup j'ai modifier ma requete pour savoir d'où vient l'erreur, et je me suis apperçu que 1tickets était retrouver plusieurs fois ! Or que normalement un ticket donne un...

    Je vous montre ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT g.name as groupname, 
    CONCAT_WS(' ', u.`firstname`, u.`name`) AS username, t.id,
    sum(case when TO_DAYS(NOW()) - TO_DAYS(t.date)<3 then 1 else 0 end) AS `3days`,
    sum(case when TO_DAYS(NOW()) - TO_DAYS(t.date)>=3 and TO_DAYS(NOW()) - TO_DAYS(t.date)<7 then 1 else 0 end) AS `7days`,
    sum(case when TO_DAYS(NOW()) - TO_DAYS(t.date)>=7 and TO_DAYS(NOW()) - TO_DAYS(t.date)<14 then 1 else 0 end) AS `14days`,
    sum(case when TO_DAYS(NOW()) - TO_DAYS(t.date)>=14 and TO_DAYS(NOW()) - TO_DAYS(t.date)<30 then 1 else 0 end) AS `30days`,
    sum(case when TO_DAYS(NOW()) - TO_DAYS(t.date)>=30 then 1 else 0 end) AS `more`
    FROM users u 
    INNER JOIN profiles_users up on ( u.id=up.users_id) 
    INNER JOIN profiles p on (p.id=up.profiles_id) 
    INNER JOIN tickets_users tu on (tu.users_id=u.id and tu.type='2') 
    INNER JOIN tickets t on (t.id=tu.tickets_id) 
    LEFT JOIN groups_users gu on (gu.users_id=u.id) 
    LEFT JOIN groups g on (gu.groups_id=g.id) 
    WHERE t.status='4' and u.name="...."
    Group by t.id
    Au final je me retrouve avec 5 tickets différents, retrouver 9.
    Image :


    Merci =)

  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,

    vérifier que vos jointures ne soient pas sur des relation n-n.

    De plus pour résoudre votre problème, je penses que l'utilisation de test d'existance (EXISTS) serai une meilleur approche que tout joindre.

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Si je joins tout c'est juste que c'est comme ça dans ma requete de base, je l'ai très peu modifier et comme vous pouvez le voir toutes mes tables sont utilisée

    Après je vais aller vérifier pour les relations

    C'est bon merci... ça merdait à cause de la table profil... et au final c'est la seule que je n'utilisais pas (ou plus pour être exact) donc MERCI

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

Discussions similaires

  1. problème avec CASE
    Par PAYASS59 dans le forum Requêtes
    Réponses: 1
    Dernier message: 22/11/2006, 13h08
  2. Réponses: 1
    Dernier message: 01/08/2006, 17h01
  3. [SQL server 2000] Problème de jointure avec 'Case'
    Par Tankian dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2006, 17h42
  4. Problème de modélisation avec Case Studio
    Par soso78 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 15/06/2006, 18h13
  5. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 15h50

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