Немного догадываюсь, не зная структуру вашей таблицы, но я думаю, что это кажется правильным.
Редактировать: только что видел другой; Как правило, я бы предпочел не загружать JOIN слишком большим количеством предложений, так как вы в конечном итоге отправляетесь на поиски повсюду, когда хотите узнать, какие предложения WHERE применяются. Если возможно, я думаю, что лучше оставить СОЕДИНЕНИЯ, содержащие только СОЕДИНЕНИЕ, а остальные поместить в ГДЕ.
Я уверен, что кто-то другой может прийти и застрелить меня на этом, но это мое мнение:)
SELECT groups.name,
users.firstname,
users.lastname,
users.emailaddress,
groupmembers.userid,
reminders.groupid,
reminders.ownerid,
reminderdetails.recno,
reminderdetails.cardid,
reminderdetails.message
FROM groups
INNER JOIN groupmembers ON groups.groupid = groupmembers.groupid
INNER JOIN users ON groupmembers.userid = users.userid
INNER JOIN reminders ON users.userid = reminders.ownderid
INNER JOIN reminderdetails ON reminders.cardid = reminderdetails.cardid
WHERE assocdate = 'Y'
AND ( reminder1 != 99
AND ( Datediff(reminderdate, '2011-09-22') = reminder1 )
OR ( reminder2 != 99
AND Datediff(reminderdate, '2011-09-22') = reminder2 ) )
AND groupmembers.sendemail = 'Y'