2011-04-25 3 views
0

ma société d'hébergement ne me permet pas d'enregistrer la requête/voir mysql base de données (ne me demandez pas .. pourquoi, je ne sais pas), donc je dois construire un tout en une requête imbriquée (ce qui est difficile pour mes compétences sql). Mon application est un simple "système de managment de billets" Ici, la structure de la table ticket_masterAide pour une requête imbriquée

ticket_id 
assignedto_user 
... 

L'autre table, pour les utilisateurs

userid 
username 

J'ai pour obtenir le nombre de billets par utilisateur, à partir de la table USERS pour inclure TOUS les utilisateurs (soit ceux qui n'ont pas de ticket ouvert).

Le résultat doit être

userid, username, tot_ticket 
1, mr a, 3 
2, mr b, Null (or zero) 
3, mr c, 2 
4, mr d, Null (or zero) 
... 

Merci à l'avance!

Répondre

1
Select U.userid, U.username 
    , Count(TM.ticket_id) As tot_ticket 
From users As U 
    Left Join ticket_master As TM 
     On U.userid = TM.assignedto_user 
Group By U.userid, U.username 
+0

'COUNT' ne peut jamais être' NULL', vous auriez probablement besoin de 'NULLIF' ou quoi que ce soit. –

+0

@Martin - Oui, oui. M'a eu lieu alors que je relisais ma requête. – Thomas

+0

@Martin - (Je me bats plus que tout, il faut plus de café ...) – Thomas

1
SELECT 
    userid, 
    username, 
    COUNT(ticket_id) 
FROM users 
    LEFT OUTER JOIN ticket_master on users.userid = ticket_master.assignedto_user 

pas très différente de @Thomas réponse, sauf que j'éviter le regroupement si votre liste d'utilisateurs est déjà unique.