Не показывать какую-либо запись с данным условием (SQL)

0

Доброе утро, я пытаюсь выполнить следующий запрос в 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")

Но когда я выполняю запрос, он скрывает только те, которые непосредственно связаны в таблицах. Как я могу скрыть другие записи, где появляются консультанты, чтобы они не появлялись?

Благодарю.

  • 0
    Вы можете попробовать использовать левое соединение вместо внутреннего соединения.
  • 0
    Можете ли вы дать нам пример данных, показывающих таблицы и данные, которые вы получаете, которые вы не хотите
Показать ещё 3 комментария
Теги:
database
relational-database

2 ответа

0
Лучший ответ

Мне удалось решить ее следующим образом. Спасибо всем за помощь.

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;
0

Я считаю, что он должен работать, если на условиях присоединения к клиенту вы исключаете там имя клиента, чтобы оно вернуло вам то, что вы хотите.

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");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню