Всем привет.
Первая таблица pay:id
1
2
3
Вторая таблица pay_service:id | pay_id | service
1 | 1 | cert
2 | 1 | dipl
3 | 2 | cert
Делаю запрос:SELECT `pay`.*
FROM `pay`
LEFT JOIN `pay_service` ON `pay_service`.`pay_id` = `pay`.`id`
WHERE IFNULL(`pay_service`.`service`, '') NOT IN ('dipl')
GROUP BY `pay`.`id`
Возвращается строки таблицы pay с id:
1, 2, 3
Нужны результаты с id:
2, 3
Нужны записи у которых нет в связанной таблице service = dipl. Можно ли как-то модернизировать подобный запрос? Знаю что есть другие запросы которые вернут правильный результат, но интересует именно возможность это сделать подобным запросом.
Пример рабочих запросов, но они не подходят:SELECT `pay`.*
FROM `pay`
LEFT JOIN `pay_service` ON `pay_service`.`pay_id` = `pay`.`id` AND `pay_service`.`service` IN ('dipl')
WHERE IFNULL(`pay_service`.`service`, '') NOT IN ('dipl')
GROUP BY `pay`.`id`
SELECT `pay`.*
FROM `pay`
WHERE `id` NOT IN (SELECT `pay_id` FROM `pay_service` WHERE `pay_service`.`service` IN ('dipl'))
GROUP BY `pay`.`id`
SELECT `pay`.*
FROM `pay`
LEFT JOIN `pay_service` ON `pay_service`.`pay_id` = `pay`.`id`
GROUP BY `pay`.`id`
HAVING CONCAT('|', GROUP_CONCAT(IFNULL(`pay_service`.`service`, '') SEPARATOR '|'), '|') NOT LIKE ('%|dipl|%')