我有两张桌子,一张带笔记
id, note, client#, flag, employee#, date
另一位与员工
id, employee#
我想查找所有带有“N”标志的注释,但是对于同一日期和客户端#没有“Y”标志,但仅适用于employee表中的员工。
例如我从:
开始1 mynote 123 Y abc 1/1/2011
2 mynote 123 N abc 1/1/2011
3 mynote 124 N abc 1/1/2011
4 mynote 124 N ccc 1/1/2011
(在我的员工表中,我有员工abc)
所以我开始:
SELECT * from notes a inner join employees b on a.employee = b.employee WHERE a.flag = 'N'
这很有效,我只为当前在员工表中的员工(例如,只有abc - 上面的记录2和3)获得了一个合理的注释列表。
现在,我需要仅回溯记录3,因为它是一个“N”记录,并且在同一日期和客户#上没有匹配的“Y”记录。
我似乎无法让额外的部分想出来添加它。
感谢。
答案 0 :(得分:1)
尝试使用联合。这样您就可以使用2个不同的查询。
答案 1 :(得分:0)
如果将flag =
表达式移到ON
子句,它会变得更简单:
SELECT * from employees e
inner join notes n1
on n1.employee = e.employee
AND n1.flag = 'N'
inner join notes n2
ON n2.employee = e.employee
AND n2.client = n1.client AND n2.date = n1.date AND n2.flag = 'Y'
我还从dasblinkenlight借用了改进的别名。