У меня есть этот SQL-код здесь ..SQL работы с датами в котором пункт
SELECT cl.clientid,
cl.clientname,
cl.billingdate,
cp.startdate,
cp.expiration,
(SELECT COUNT(*)
FROM invoice
HERE client = cl.clientid) AS invoicecount
FROM client cl
INNER JOIN clientplan cp ON cp.client = cl.clientid
WHERE cl.isbilled = 1 AND expiration is NULL AND expiration > '2012-06-22'
Моя проблема заключается в том, что клиент может иметь 3 планов клиента и они либо имеют дату истечения срока действия или истечения является NULL. Я пытаюсь получить строки, которые не истекли или являются NULL.
Что я делаю неправильно?
Если дата NULL, у вас никогда не будет значения .. [edit], так что это будет либо EXPIRATION NULL OR (EXPIRATION IS NOT NULL AND EXPIRATION> '22 -JUN-2012 ') [/ edit] – PaddyC
Спасибо, Падди С, это сработало! – user979331
'AND' не означает« эти записи и эти записи »означает« где это верно, и это правда ». В вашем случае вы * не можете * иметь 'expiration IS NULL' *** и ***' expiration> '2012-06-22' 'оба одновременно являются истинными. Вы имеете в виду 'cl.isbilled = 1 AND (expiration is NULL ИЛИ expiration> '2012-06-22')' – MatBailie