2016-01-03 4 views
1

У меня есть простой базы данныхMySQL присоединиться к конкретным ИНЕКЕ

enter image description here

С помощью этого запроса я получаю все пользователи и количество продуктов, которые они купили:

SELECT 
    c.id, 
    cd.name, 
    cd.surname, 
    COUNT(p.name) as bought 
FROM shopping s 
JOIN client c ON s.client_id = c.id 
JOIN client_details cd ON c.id = cd.client_id 
JOIN product p ON s.product_id = p.id 
GROUP BY c.id; 

Это очень хорошо, но Я должен выбрать всех пользователей и количество определенных продуктов, купленных. С помощью этого запроса я получаю это только если пользователь купил по крайней мере один продукт:

SELECT 
    c.id, 
    cd.name, 
    cd.surname, 
    COUNT(p.name) as bought 
FROM shopping s 
JOIN client c ON s.client_id = c.id 
JOIN client_details cd ON c.id = cd.client_id 
JOIN product p ON s.product_id = p.id 
WHERE p.name = 'sugar' 
GROUP BY c.id; 

Я хочу, чтобы получить список всех пользователей, и если конкретный пользователь Ждут»купить определенный продукт, должно быть 0 на выходе ,

ответ

0

Использование агрегации условие:

SELECT c.id, cd.name, cd.surname, 
     MAX(p.name = 'sugar') as SugarFlag 
FROM shopping s JOIN 
    client c 
    ON s.client_id = c.id JOIN 
    client_details cd 
    ON c.id = cd.client_id JOIN 
    product p 
    ON s.product_id = p.id 
GROUP BY c.id;