$sql = $pdo->query('SELECT p.* FROM prospects p
LEFT JOIN exported_leads e
on p.id = e.lead_id WHERE DATEDIFF(NOW(), e.last_export_date) > 90 AND e.p". $partner_id ." IS NULL');
это запрос, который я использую. Вот как выглядит БД (с некоторыми примерами):
http://i.imgur.com/KrOv36e.png
вот структура БД: http://i.imgur.com/pqYXPuw.png
как видите, строка с export_id = 5 имеет дату last_export_date более 90 дней назад. так что если я удалю
AND e.p". $partner_id ." IS NULL')
из запроса он находит эту строку. однако, если у меня все еще есть это, и мой столбец, который я заполняю, является p2. тогда вы можете видеть, что поле имеет значение NULL. что означает, что IS NULL должен работать? однако, когда я запускаю запрос, он не находит эту строку.
всякий раз, когда я импортирую в эту таблицу, я автоматически устанавливаю все, кроме одного поля p * в NULL. и вы можете видеть, что он имеет значение NULL в БД.
я предполагаю, что запрос не видит эти значения как NULL, так как я мог бы улучшить этот запрос, чтобы фактически найти те столбцы, которые говорят «NULL»?
У тебя беспорядок с конкатенацией & цитаты :
$sql = $pdo->query('SELECT p.*
FROM prospects p
LEFT JOIN exported_leads e ON p.id = e.lead_id
WHERE DATEDIFF(NOW(), e.last_export_date) > 90
AND e.p' . $partner_id . ' IS NULL');
Других решений пока нет …