0

我正在使用 Sqlite3 数据库,并且我有 3 个要加入的表。我的程序基本上有文档。并且您可以选择属于该文档的多个员工。但员工也可以属于其他文件。

以下是我的表格:

表员工:

  • id:整数主键

表格文件:

  • id:整数主键

表 DocEmp:

  • id:整数主键
  • docId:整数
  • empId:整数
  • 状态:整数

DocEmp 表可以为空,只有 Employee 和 Document 表总是填充。最重要的是我总是想加载所有员工!

例如: 我有 3 名员工的 id 为:1,2 和 3。有 2 个文档的 id 为 1 和 2。DocEmp 有以下记录: Row1: 1,1,1,0 Row2: 2,1,2, 1 所以这意味着只有文档 1 有 2 名员工的 id 为 1 和 2。所以当我在文档 1 中时,我想加载所有 3 名员工,并且还想知道为该文档填写的 2 名员工的状态在 DocEmp 表中。因为文档 2 没有员工,所以我只需要所有员工。

4

1 回答 1

2

如果我正确理解您的问题,我想您可能正在寻找left join

select e.id as employeeid,
       d.id as documentid,
       de.state as state     
from employee e
--this could be an inner join but your example is confusing
left join document d on e.id = d.id 
left join docemp de on e.id = de.empid 
                   and d.id = de.docid;
于 2015-08-18T14:56:13.960 回答