gpt4 book ai didi

sql - 从多对多表查询中选择

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:06 24 4
gpt4 key购买 nike

我有一些表:

session
SessionID int PK
创建日期时间
SiteId 整数 FK

Tracking_Parameters
ParamID 整数 PK
ParamName nvarchar

Session_Custom_Tracking
SessionID int FK
ParamID 整数 FK
参数值 nvarchar

Site_Custom_Parameters
SiteID int FK
ParamID 整数 FK
ParamKey nvarchar

session :包含访问者的唯一 session ID 和他们进入网站的时间。

Tracking_Parameters:包含您可能希望在网站上跟踪的内容列表(即电子邮件打开、电子邮件点击、文章查看等)

Site_Custom_Parameters:对于特定站点(表未显示),声明 Tracking_Parameter 的键值(即要在查询字符串或路由中查找的键)

Session_Custom_Tracking: session 和跟踪参数之间的链接,还包含我的应用程序找到参数键时的值。

问题:

我想为这些特定 session 选择 session ID,Session_Custom_Tracking 中有一条记录用于两个不同的 ParamID。我想找到用户打开电子邮件(paramid 1)并单击(paramid 3)该电子邮件中的链接的 session 。

最佳答案

您可以两次加入同一个表:

SELECT S.SessionID
FROM Sessions AS S
JOIN Session_Custom_Tracking AS SCT1
ON SCT1.SessionID = S.SessionID
AND SCT1.ParamID = 1
JOIN Session_Custom_Tracking AS SCT2
ON SCT2.SessionID = S.SessionID
AND SCT2.ParamID = 3

可能更容易阅读的替代方法(因为它更符合您描述问题的方式)是使用 WHERE EXISTS:

SELECT S.SessionID
FROM Sessions AS S
WHERE EXISTS
(
SELECT *
FROM Session_Custom_Tracking AS SCT1
WHERE SCT1.SessionID = S.SessionID
AND SCT1.ParamID = 1
)
AND EXISTS
(
SELECT *
FROM Session_Custom_Tracking AS SCT2
WHERE SCT2.SessionID = S.SessionID
AND SCT2.ParamID = 3
)

关于sql - 从多对多表查询中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12096511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com