Постараюсь описать понятно.
Есть две таблицы, запросы на расчет, и ответы по этим запросам.
Таблица 1: project_calculation_send
Тут хранятся отправленные запросы от пользователей.
------------------------
| send_id | project_id |
------------------------
| 1 | 12340 |
| 2 | 12341 | *
| 3 | 12342 |
| 4 | 12343 |
| 5 | 12344 | * (null)
Таблица с ответами: `project_calculation`
Тут соответственно ответы расчета если они есть.
-------------------------
id | send_id | user_id |
-------------------------
| 1 | 1 | 2 **
| 2 | 1 | 35 **
| 3 | 2 | 35
| 4 | 3 | 2
| 5 | 4 | 2
Нужно найти запросы пользователя на которые еще нет ответа. Плюс к этому нужно учитывать, что ответ от пользователя с ID != 2, также считается без ответа.
Проблема описана тут:
Если в запросе есть несколько ответов (project_calculation), от разных пользователей, например от пользователя с ID 2 и 35 (как в send_id=1), мой запрос получает запись с `id`=2 всего лишь пропуская с `id` = 1. Мне же не нужно вообще получать запись с `id`=2 так как тут ответил пользователь с ID 2 (`project_calculation`.`id`=1).
Делаю следующее (в запросе еще дополнительные таблицы, для фильтра)
SELECT `project_calculation_send`.`project_id`
FROM `project_calculation_send`
LEFT JOIN `project_calculation` ON `project_calculation_send`.`send_id`=`project_calculation`.`send_id`
WHERE `project_calculation`.`user_id` IS NULL OR `project_calculation`.`user_id` != 2
Ожидаю получить только две записи project_id` = 12341 и 12344 (так как никто не ответил)