SQL Server Left 加入两个参数不返回在 B 上找不到 table
SQL Server Left join on two parameters not returning the not found on B table
我有两个 table:"addToCart" 和 "order2":
addToCart - 将产品添加到购物车的用户
订单 - 购买产品的用户
在两个 table 中我也有产品类别。
加入购物车
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])
据我所知,如果我在 table A 和 table B (on A.id = B.id
) 之间进行左连接,我可以从 table A 中提取行在 table B.
中没有匹配项
但是当我 运行 使用 on 子句中的两个参数进行此查询时,ProductCategory3 的 id001 未被 return 编辑。有人可以帮助确定为什么我可以对 return 已添加到购物车的某些 productCategory 但没有订购此 productCategory 的联系人做些什么吗?
嗨!
我目前没有任何服务器,但也许 "having"
可能有这样的东西:
having max(added.[Date]) > max(ord.[Date]) or IsNull(ord.[Date])
P. S.
我不知道您开发的查询的语义,但看起来问题出在那个子句中。
我有两个 table:"addToCart" 和 "order2":
addToCart - 将产品添加到购物车的用户
订单 - 购买产品的用户
在两个 table 中我也有产品类别。
加入购物车
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])
据我所知,如果我在 table A 和 table B (on A.id = B.id
) 之间进行左连接,我可以从 table A 中提取行在 table B.
但是当我 运行 使用 on 子句中的两个参数进行此查询时,ProductCategory3 的 id001 未被 return 编辑。有人可以帮助确定为什么我可以对 return 已添加到购物车的某些 productCategory 但没有订购此 productCategory 的联系人做些什么吗?
嗨!
我目前没有任何服务器,但也许 "having" 可能有这样的东西:
having max(added.[Date]) > max(ord.[Date]) or IsNull(ord.[Date])
P. S. 我不知道您开发的查询的语义,但看起来问题出在那个子句中。