Доброе утро, я пытаюсь выполнить следующий запрос в MySQL: показать имя и фамилию консультантов, которые не участвовали ни в одном проекте "Хуан Перес". Я использую следующий запрос:
SELECT consultant.name, consultant.surname FROM consultor
INNER JOIN participate ON participate.id_consultant = consultant.id
INNER JOIN project ON project.id = participate.id_project
INNER JOIN cliente ON client.id = project.id_client
WHERE client.name NOT IN("Juan Perez")
Но когда я выполняю запрос, он скрывает только те, которые непосредственно связаны в таблицах. Как я могу скрыть другие записи, где появляются консультанты, чтобы они не появлялись?
Благодарю.
Мне удалось решить ее следующим образом. Спасибо всем за помощь.
SELECT consultant.name, consultant.surname FROM consultant
LEFT JOIN (
SELECT id_project, participate.id_consultant FROM participate
INNER JOIN project
USING(id_project)
INNER JOIN client ON client.id = project.id_cliente
WHERE client.name like 'Juan Perez'
)
project ON project.id_consultant = consultant.id
WHERE project.id_project IS NULL;
Я считаю, что он должен работать, если на условиях присоединения к клиенту вы исключаете там имя клиента, чтобы оно вернуло вам то, что вы хотите.
SELECT consultant.name, consultant.surname
FROM consultor
INNER JOIN participate ON participate.id_consultant = consultant.id
INNER JOIN project ON project.id = participate.id_project
INNER JOIN client ON client.id = project.id_client and client.name NOT IN ("Juan Perez");