Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL选择不在一起工作的所有ID号对_Mysql_Sql_Relational Database - Fatal编程技术网

Mysql SQL选择不在一起工作的所有ID号对

Mysql SQL选择不在一起工作的所有ID号对,mysql,sql,relational-database,Mysql,Sql,Relational Database,给出以下表格: EMPLOYEE: ID, ProjectNum, Hours 在ID和ProjectNum一起构成主键的地方,我希望能够输出所有的ID号对,这样它们就不会在任何项目上一起工作。员工可以在多个项目上工作 SELECT DISTINCT e1.id as emp1, e2.id as emp2 FROM Employee e1 JOIN Employee e2 ON e1.id < e2.id WHERE not exist ( SELEC

给出以下表格:

EMPLOYEE: ID, ProjectNum, Hours
在ID和ProjectNum一起构成主键的地方,我希望能够输出所有的ID号对,这样它们就不会在任何项目上一起工作。员工可以在多个项目上工作

SELECT DISTINCT
       e1.id as emp1, 
       e2.id as emp2
FROM Employee e1
JOIN Employee e2
  ON e1.id < e2.id
WHERE not exist ( SELECT 1
                  FROM Employee r1
                  JOIN Employee r2
                    ON r1.id < r2.id
                   AND r1.ProjectNum = r2.ProjectNum 
                   AND e1.ID = r1.ID
                   AND e2.ID = r2.ID
                )

我相信这可以通过表本身的某种连接来实现,但我正在努力解决如何只输出ProjectNum1 ProjectNum2的结果,因为很明显,这可能是一个项目的结果,而不是另一个项目的结果。

您搜索所有对,并过滤在一个项目中一起工作的结果

SELECT DISTINCT
       e1.id as emp1, 
       e2.id as emp2
FROM Employee e1
JOIN Employee e2
  ON e1.id < e2.id
WHERE not exist ( SELECT 1
                  FROM Employee r1
                  JOIN Employee r2
                    ON r1.id < r2.id
                   AND r1.ProjectNum = r2.ProjectNum 
                   AND e1.ID = r1.ID
                   AND e2.ID = r2.ID
                )

使用e1.id搜索所有对,并过滤在一个项目中一起工作的对

SELECT DISTINCT
       e1.id as emp1, 
       e2.id as emp2
FROM Employee e1
JOIN Employee e2
  ON e1.id < e2.id
WHERE not exist ( SELECT 1
                  FROM Employee r1
                  JOIN Employee r2
                    ON r1.id < r2.id
                   AND r1.ProjectNum = r2.ProjectNum 
                   AND e1.ID = r1.ID
                   AND e2.ID = r2.ID
                )

您使用e1.id添加一些示例表数据和预期结果。全部为格式化文本,而不是图像。同时显示您当前的查询尝试。添加一些示例表数据和预期结果。全部为格式化文本,而不是图像。同时向我们展示您当前的查询尝试。考虑到数据结构,您可能需要在外部查询中使用select distinct以避免重复。顺便说一句,我认为您的employee表应称为employee_projects,如果您有一个包含员工信息(如姓名、电话等)的表,请使用该表作为创建对的基础。因为表越小,性能越好。考虑到数据结构,您可能需要在外部查询中使用select distinct以避免重复。顺便说一句,我认为您的employee表应称为employee_projects,如果您有一个包含员工信息(如姓名、电话等)的表,请将其用作创建对的基础。因为表格越小,性能越好