2010-03-23 117 views
0

我有以下查詢Mysql的填充缺少的日期

SELECT * 
FROM attend 
RIGHT OUTER JOIN noattend ON attend.date = noattend.date2 
WHERE attend.date 
BETWEEN '2010-02-01' 
AND '2010-04-01' 
AND attend.customerid =1 
ORDER BY date DESC 
LIMIT 0 , 30 

。參加與客戶ID noattend表與行對於每一日期(DATE2)表我跟着其他問題,右外意見加入它創造的價值,沒有記錄參加,但它仍然沒有填充空 任何幫助非常讚賞

回答

0

如果你說noattend是一個表,每行的日期,你應該使用它在WHERE子句中:

WHERE noattend.date2 BETWEEN (..... 

而且我覺得它更清晰的使用LEFT JOIN:

SELECT * 
FROM noattend 
LEFT OUTER JOIN attend ON (attend.date = noattend.date2 AND attend.customerid =1) 
WHERE noattend.date2 
BETWEEN '2010-02-01' 
AND '2010-04-01' 
ORDER BY date DESC 
LIMIT 0 , 30 
+0

感謝我想你的建議,但它似乎只在一些額外的空行進行拉(我覺得空行是很好,只要有日期有)我有25與我的和你的30。有任何想法嗎? – bsandrabr 2010-03-23 17:54:03

+0

現在我覺得啞巴可能會有所幫助,如果我拿出限制條款 – bsandrabr 2010-03-23 18:03:44

0

你需要擺脫SELECT *中,列出你的列名來代替。如果您想要日期,請使用noattend.date2字段,而不是attend.date。對於那些爲填寫「缺失」日期而創建的額外行,Attend.date將爲NULL(空白)。

喜歡的東西:

SELECT attend.id, attend.name, noattend.date2 
FROM . . . (continue your code here) 
+0

好點也謝謝最後一點必須是由date2 desc命令 – bsandrabr 2010-03-23 21:11:45