2011-02-10 62 views
2

這是我當前的SQL查詢SQL留下了那裏混亂

SELECT 
    urls.short, 
    urls.long, 
    urls.user, 
    dates.date AS date, 
    COUNT(views.short) AS views, 
    SUM(views.money) AS money 
FROM dates 
LEFT JOIN views ON dates.date = views.date 
LEFT JOIN urls ON views.short = urls.short 
WHERE urls.user='test' 
GROUP BY dates.date, views.date 
LIMIT 0, 20 

它顯示的結果是這樣的連接:

2011-02-08測試測試1 0.003

2011 -02-09 test test 6 0.016

但是w母雞我刪除

WHERE urls.user='test' 

我得到

2011-02-05 0

2011-02-06 0

2011-02-07 44kc http://google.com 27 0.031

2011-02-08 44kc http://google.com 15 0.045

2011-02-09試驗測試12 0.032

2011-02-10 0

所以最後我想用第一查詢,以獲得第二查詢結果(在沒有任何可用的情況下顯示0)。 那麼最新的解決方案?

回答

10

我不知道如果我正確地理解你的問題,但你可能要考慮

LEFT JOIN urls ON views.short = urls.short AND urls.user='test' 
+2

這是正確的。 LEFT JOIN工作正常,但WHERE子句是基於從可選連接的表中引入的列限制行,從而排除未連接的行。將邏輯移至連接條件可修復此問題。 – 2011-02-10 11:44:42