代码之家  ›  专栏  ›  技术社区  ›  Felipe Rodriguez

不显示给定条件的任何记录(SQL)

  •  0
  • Felipe Rodriguez  · 技术社区  · 7 年前

    早上好,我正在MySQL中执行以下查询: 显示未参与任何“Juan Perez”项目的顾问的姓名。 我正在使用以下查询:

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

    但当我执行查询时,它只隐藏表中直接相关的那些。 我如何才能将其他记录隐藏在顾问出现的地方,以便他们不会出现?

    谢谢

    2 回复  |  直到 7 年前
        1
  •  0
  •   Simon R    7 年前

    我认为,如果在加入客户的条件下,您排除了那里的客户名称,它将返回您想要的内容,那么它应该会起作用。

    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");
    
        2
  •  0
  •   Felipe Rodriguez    6 年前

    我用下面的方法解决了这个问题。谢谢大家的帮助。

    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;