2010-12-15 12 views
1

Ich habe 2 Tabellenmysql Problem

Table: Users 
     userid (int, PK) 
     name (varchar) 
     type (enum) 

Table: Sales 
     salesid (int) 
     productid (int) 
     userid (int, FK) 

Ich brauche Ausgabe als

User Name         Sales Count 
    ABC           5 
    BCD           0 
    EFG           1 

Ich brauche alle Benutzer von "Benutzer" Tabelle mit bestimmtem Typ (wie a, b, c) beitreten und Umsatzzahl (wenn keine Verkäufe, dann 0)

SELECT users.name 
     , count(sales.salesid) 
FROM users 
    LEFT JOIN sales 
    ON users.userid = sales.userid 
WHERE type = 'a' 

Das Problem mit obiger Abfrage ist, es nur ist zeigt mir jene Benutzer, die ha ve Umsatz, ich brauche alle Benutzer mit spezifischen Art, ob sie Umsatz haben oder nicht

Dank

+2

Die linke kommen gut aussieht. Ist der Typ der fehlenden Zeilen ungleich "a"? –

+0

@bernd_k: Zeilen gibt es mit Typ 'a', aber sie sind immer noch zu fehlen –

Antwort

2

Werden Sie nicht die GROUP BY-Klausel fehlt? Bei den meisten SQL-Dialekten benötigen Sie es, und in dem (zugegebenermaßen ziemlich alten) MySQL, das ich verwende, muss es da sein, oder Sie erhalten einen Fehler. Fügen Sie einfach "GROUP BY users.name" am Ende hinzu, und es sollte funktionieren.

+0

Danke, es funktionierte –

1

Versuch:

SELECT users.name, count(sales.salesid) 
FROM users 
    LEFT JOIN sales 
    ON (users.userid = sales.userid AND type = 'a') 
+0

Nein, wenn Sie die Prüfung für den Typ in der Join-Bedingung setzen, wird dies die Benutzer, die andere Typen als 'a haben ". –