2014-03-06 56 views
0

我也需要顯示BRANDS的空行。我的意思是,在此查詢未示出的第三品牌,外觀:需要顯示SQL部分空結果

SELECT 
    da_brands.name AS brand_name, 
    COUNT(DISTINCT da_deals.id) AS total_deals, 
    0 AS total_downloaded_coupons, 
    0 AS total_validated_coupons, 
    COUNT(da_logs.id) AS total_likes 
FROM 
    da_brands, 
    da_deals 
    LEFT JOIN da_logs 
    ON da_logs.fk_deal_id = da_deals.id 
    AND da_logs.fk_deal_id = da_deals.id 
    AND da_logs.type = 'deal_like' 
WHERE da_brands.fk_club_id = 6 
    AND da_deals.fk_brand_id = da_brands.id 
    AND da_brands.date <= NOW() 
GROUP BY da_brands.name 
ORDER BY da_brands.name ASC 

結果:

brand_name total_deals total_downloaded_coupons total_validated_coupons total_likes 
Marca2 2 0 0 1 
Marca1 9 0 0 4 

這是有條件的顯示交易中只有品牌,但我想所有品牌...:

 AND da_deals.fk_brand_id = da_brands.id 

任何想法我應該使用什麼聲明?

非常感謝。

+0

移動這個'AND da_deals.fk_brand_id = da_brands.id' where子句 –

+0

傷害了我的眼前......條件 – Populus

+0

我得到這個錯誤: 未知列「da_brands。 id'in'子句' –

回答

1

在WHERE謂詞這下面一行是問題...

AND da_deals.fk_brand_id = da_brands.id 

您需要LEFT JOIN到da_deals,你對da_logs以同樣的方式,並移動線之上進入ON語句爲加入。

見下文......

SELECT 
    da_brands.name AS brand_name, 
    COUNT(DISTINCT da_deals.id) AS total_deals, 
    0 AS total_downloaded_coupons, 
    0 AS total_validated_coupons, 
    COUNT(da_logs.id) AS total_likes 
FROM da_brands 
LEFT JOIN da_deals 
ON da_brands.id = da_deals.fk_brand_id 
LEFT JOIN da_logs 
ON da_logs.fk_deal_id = da_deals.id 
AND da_logs.fk_deal_id = da_deals.id 
AND da_logs.type = 'deal_like' 
WHERE da_brands.fk_club_id = 6 
AND da_brands.date <= NOW() 
GROUP BY da_brands.name 
ORDER BY da_brands.name ASC