Mysql填写缺少的日期

时间:2010-03-23 17:07:06

标签: mysql join

我有以下查询

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

参加与customerid的表 noattend是每个日期都有一行的表(date2)我跟着其他问题的建议到右外连接它来创建没有参加记录的值,但它仍然没有填写空白 任何帮助非常感谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您需要删除SELECT *并列出您的列名称。如果您想要日期,请使用字段noattend.date2,而不是attend.date。对于为填补“缺失”日期而创建的额外行,Attend.date将为NULL(空白)。

类似的东西:

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