mysql如何对同一个表进行内部连接和第二个内部连接?
我有两张桌子,一张有笔记mysql如何对同一个表进行内部连接和第二个内部连接?,mysql,sql,join,Mysql,Sql,Join,我有两张桌子,一张有笔记 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/
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'
这就行了,我得到了一个合理的注释列表,只针对当前在employees表中的员工(例如,上面只有abc-记录2和3)
现在,我只需要返回记录3,因为它是一个“N”记录,并且没有相同日期和客户机的匹配“Y”记录
我似乎无法找到额外的部分来添加它
谢谢。为此尝试使用工会。通过这种方式,您可以处理两个不同的查询。尝试为此使用联合。通过这种方式,您可以处理两个不同的查询。如果将
标志=
表达式移动到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中改进的别名。如果将
标志=
表达式移动到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借用了改进的别名。为什么不删除
WHERE
子句中的标志
条件?这不就是你想要的吗?我只是稍微澄清了一下,我尝试了下面的查询,但它们不起作用,所以我认为我之前的解释不清楚。为什么不删除WHERE
子句中的标志
条件呢?这不就是你想要的吗?我只是澄清了一点,我尝试了下面的查询,但它们不起作用,所以我认为我之前的解释不清楚。