sql-server-2005 - SQL Server左连接两个参数不返回在B表上找不到
问题描述
我有两个表:“addToCart”和“order2”:
addToCart - 将产品添加到购物车的用户
order - 购买产品的用户
在这两个表中,我也有产品类别。
添加到购物车
UserID ProductCategory Date
-----------------------------------
001id ProductCategory1 02/24/2020 10:00 AM
001id ProductCategory2 02/24/2020 11:00 AM
001id ProductCategory2 02/24/2020 11:40 AM
001id ProductCategory3 02/24/2020 12:40 PM
订单2
UserID ProductCategory Date
-----------------------------------
001id ProductCategory1 02/24/2020 11:00 AM
001id ProductCategory2 02/24/2020 11:30 AM
我需要在每个 ProductCategory 中获取放弃购物车的用户。为了实现这一点,我查看添加到购物车但未生成订单的用户,或者一个 ProductCategory 的最后一个 addToCart 比同一 ProductCategory 的订单旧。
所以,我每天都运行这个查询:
select
added.UserID,
added.ProductCategory,
max(added.[Date]) as addedDate
from addTocart added
left join order2 ord
on added.UserID = ord.UserID
and added.ProductCategory = ord.ProductCategory
group by added.UserID, added.ProductCategory
having max(added.[Date]) > max(ord.[Date])
据我所知,如果我在表 A 和表 B ( on A.id = B.id
) 之间进行左连接,我可以从表 A 中获取表 B 中没有匹配项的行。
但是,当我使用 on 子句中的两个参数运行此查询时,不会返回 ProductCategory3 的 id001。有人可以帮助确定原因吗?我可以做些什么来返回已添加到购物车中的一些 productCategory 但没有订购此 productCategory 的联系人?
解决方案
你好!
我目前没有任何服务器,但也许“拥有”可能是这样的:
having max(added.[Date]) > max(ord.[Date]) or IsNull(ord.[Date])
PS我不知道您开发的查询的语义,但看起来问题出在该子句中。
推荐阅读
- typescript - 当值未定义时,对象键不显示
- opensips - OpenSIPS,通过推送通知注册时如何避免重复邀请?
- java - 如何在 Firestore Android 中获取子集合的文档 ID
- reactjs - 用数百个 URL 调用 cache.addAll()?
- java - 在 Selenium TestNG 中,我想在多个会话中同时执行相同的测试用例。我应该在xml中添加什么属性?
- excel - 将数据透视表转换为交叉引用表
- python - 我收到一个 AttributeError - Python GUI Programming with Tkinter 作者:Alan D Moore
- python - Django 序列化程序根据外键关系列表的一侧显示不同的字段
- python-3.x - Python TypeError:模块对象不可调用
- javascript - 如何使用字典对数组进行排序?[Javascript]