Как получить записи, где нет заданного типа после group by
Есть 2 таблицы. Клиентов и их действий. Надо получить тех клиентов, у которых нет конкретного действия. Таблицы выглядят вот так, исходные данные:
clients:
empId name
1 Clark
2 Dave
3 Ava
4 Avaaad
actions:
empId cliId typeAct
1 1 1
2 1 2
3 2 2
4 3 3
5 1 3
Можете посмотреть в онлайн mysql
Сделал следующий запрос. Он выбирает клиентов и их действия. Выбор клиента без действий не составляет труда. Можно просто дописать WHERE actions.typeAct IS NULL
, а вот как выбрать клиентов, у которых нет конкретного действия? Каким-то подзапросом или это уже через PHP делать?
SELECT name, typeAct FROM clients
left join actions on actions.cliId=clients.empId
group by clients.name, actions.typeAct;
Вывод:
name typeAct
Clark 3
Clark 2
Clark 1
Dave 2
Ava 3
Avaaad NULL
Ожидания, например для тех, у кого нет действия 2:
name typeAct
Ava 3
Avaaad NULL
Источник: Stack Overflow на русском