2010-12-15 6 views
1

У меня есть 2 таблицыMySQL LEFT JOIN проблемы

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

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

мне нужна выход в

User Name         Sales Count 
    ABC           5 
    BCD           0 
    EFG           1 

мне нужно все пользователи от "пользователей" таблицы с определенным типом (например, а, б, в) и количество продаж (если нет продаж, то 0)

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

проблема с выше запроса, это только показывает мне те пользователи, которые ха ве продаж, мне нужно все пользователи с определенным типом, имеют ли они продажи или нет

Благодарности

+2

Левый присоединиться выглядит правильно. Является ли тип недостающих строк неравным «a»? –

+0

@bernd_k: строки есть с типом 'a', но они по-прежнему отсутствуют слишком –

ответ

2

Вы не хватаете предложения GROUP BY? С большинством SQL-диалектов вам это нужно, и в (по правде говоря, довольно старой) MySQL, которую я использую, она должна быть там, или вы получаете ошибку. Просто добавьте «GROUP BY users.name» в конце, и он должен работать.

+0

спасибо, это сработало –

1

попробовать:

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

Нет, если вы поместите проверку типа в условие соединения, это будет содержать пользователей, у которых есть другие типы, чем 'a ». –