我有三个表的(大大简化)模式如下:
我正在寻找在特定日期范围内没有订单的客户查询数据库。我知道LEFT JOIN
可以用来简单地找到没有发票等的客户,但我不确定如何利用JOIN
(或者甚至OUTER JOIN
)来引入日期范围。< / p>
这是否可以使用SQL JOIN或我是否应该使用NOT IN
语法来查找不在给定结果集中的客户?
我的数据库软件是MySQL。
答案 0 :(得分:1)
试试这个:
select c.*
from customers c left join
invoices i
on c.code = i.customer_code and
i.date between DATE1 and DATE2
where i.customer_code is null;
关键的想法是将日期范围放在on
子句中。