我正在尝试写一个SQL查询,查找两个人是否在同一天去了同一个地方 .
例如,如果John于15/03/2018,10/02/201和03/01/2018去了沃尔玛,并且如果Doe在同一天去了沃尔玛,则显示结果 .
但是如果Doe于15/03/2018,10/02/201,而不是03/01/2018去了沃尔玛,那么请不要显示此记录 .
这是表格的架构 . visitation (username, name, place, date);
john, John, Walmart, '15/03/2018'
john, John, Walmart, '10/02/2018'
john, John, Walmart, '03/01/2018'
doe, Doe, Walmart, '15/03/2018'
doe, Doe, Walmart, '10/02/2018'
doe, Doe, BestBuy, '11/13/2018'
上述输出应为零 .
我知道我必须自己加入地点和日期,用户名不等于username2,但我如何检查第二个人是否在同一天去了同一个地方和另一个人?
任何帮助都会很棒 .
3 回答
如果我理解正确,你会做简单的聚合,然后过滤记录
如果您事先知道要比较的两个用户,那么这样的事情就可以了 .
这实际上是一个交叉,MySQL不支持 .
Sql Fiddle
首先,您应该考虑使用关联表 . 您的表中似乎有很多重复数据,很容易导致混淆(如果您插入“Jonh”而不是“John”,它就不会将其识别为同一个人!) .
所以你应该有一个
users
表和一个places
表以及一个额外的关联表,你可以将它们连接起来:因此,通过使用外键约束,您可以轻松查询关系并获得所需的连接 .