Si vous dites que noattend est une table avec une ligne pour chaque date, vous devez l'utiliser dans la clause WHERE :
WHERE noattend.date2 BETWEEN (.....
Et je pense qu'il est plus clair d'utiliser 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