我有以下查询
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)我跟着其他问题的建议到右外连接它来创建没有参加记录的值,但它仍然没有填写空白 任何帮助非常感谢
答案 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)