在具有以下架构定义的表employees和凭单之间具有一对多关系:
employees
- id
- full_name
vouchers
- id
- employee_id
- date
我需要让所有员工在特定日期没有代金券。
现在,我在后端代码中所做的是首先获取所有员工列表,然后获取拥有特定日期凭证的所有员工。最后减去两个雇员名单。这样我就得到了两个雇员名单的区别。
这就是我在grails框架中使用的逻辑
private List<Employee> getEmployeeListInDate(final Date date) {
List<Employee> employeeList = employeeService.list()
List<Employee> employeeListInDate = employeeService.listInDate(date)
employeeList - employeeListInDate
}
这很管用。但是我想知道如何使用sql查询实现这个逻辑?我创建了一个sqlfiddle来促进您的协作。
谢谢你的时间
3条答案
按热度按时间cu6pst1q1#
你可以这样做
not exists
.voj3qocg2#
使用
not exists
效果很好。为了完整性,我将提到您还可以使用外部联接,如下所示:这是小提琴
weylhg0b3#
可以使用左或右外部联接,例如:
基本上你要找的就是这套
![](https://i.stack.imgur.com/WCrPU.png)