开发者

Mysql filling in missing dates

开发者 https://www.devze.com 2022-12-24 02:26 出处:网络
I have the following query SELECT * FROM attend RIGHT OUTER JOIN noattend ON a开发者_运维问答ttend.date = noattend.date2

I have the following query

SELECT * 
FROM attend
RIGHT OUTER JOIN noattend ON a开发者_运维问答ttend.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

Attend is the table with customerid noattend is the table with a row for each date (date2) I followed the advice in other questions to right outer join it to create values where there is no record in attend but it still isn't filling in the empties any help much appreciated


If you say that noattend is a table with a row for each date, you should use it in WHERE clause:

WHERE noattend.date2 BETWEEN (.....

And I think it's more clear to use 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


You need to get rid of the SELECT * and list your column names instead. Where you want the date to be, use the field noattend.date2, not attend.date. Attend.date will be NULL (blank) for those extra rows created to fill in your "missing" dates.

Something like:

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

精彩评论

暂无评论...
验证码 换一张
取 消