- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在解决这个 sql 难题,我几乎想通了,但最后一部分有点挑战性。
我有一个事件表和一个用户表
事件的状态为:事件/非事件。
最重要的是,事件和用户之间有一个连接表:campaign_users。此表用于专门将事件分配给一部分用户。
鉴于此数据:
Campaigns
id name status
1 campaign_a active
2 campaign_b active
3 campaign_c active
4 campaign_d inactive
Users
id name
1 user_a
2 user_b
3 user_c
Campaign_users
id campaign_id user_id
1 2 1
2 3 2
3 4 1
我想进行一个结合了几个“方面”的查询。正如我所说,我停留在最后一部分,这是我的步骤:
第 1 步:选择有效的事件:
SELECT campaigns.*
FROM campaigns
WHERE campaigns.status = 'active'
output
campaign: 1,2,3
第 2 步:(和)不专门分配给任何人:
SELECT campaigns.*
FROM campaigns
WHERE campaigns.status = 'active'
WHERE NOT EXISTS(select * FROM campaign_users WHERE campaign_users.campaign_id = campaigns.id)
output:
campaign: 1
第 3 步:(和)专门分配给 passed_in user_id (1)。
SELECT campaigns.*
FROM campaigns
WHERE campaigns.status = 'active'
INNER JOIN campaign_users ON campaign_users.campaign_id = campaigns.id
AND campaign_users.user_id = 1
output:
campaign: 2
最后一步:
这是我卡住的部分。
查询将所有“方面”组合在一起:仅不独占(未分配给任何人)且独占传入的 user_id 的事件广告系列。
写这个感觉有点矛盾,但内部连接只返回连接表中存在的事件,但它会跳过“非排他”事件。
expected output:
with passed_in user_id of 1
campaign: 1,2 (Active & non exclusive and exclusively assigned to user 2)
with passed_in user_id of 2
campaign: 1,3 (Active & non exclusive and exclusively assigned to user 2)
with passed_in user_id of 3
campaign: 3 (Active & non exclusive but no exclusive assigned to user 3)
最佳答案
您可以使用一个简单的技巧:将所有 campaign_users
外部连接到 campaigns
。对于独家广告系列,您将获得针对每个广告系列和用户的一行,对于非独家广告系列,您将获得一行用户为空的行。为相关用户(比如用户 1)或所有用户(用户 null)保留所有事件。
select c.*
from campaigns c
left join campaign_users cu on cu.campaign_id = c.id
where c. status = 'active' and (cu.user_id = 1 or cu.user_id is null);
关于mysql - 合并连接并存在于连接表上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44563405/
有没有办法在 Vim 中打开一个文本文件,并在同一个窗口中打开它旁边的 shell? 我发现自己打开脚本进行编辑、更改、关闭 Vim、运行脚本进行测试,然后再次打开 Vim,一遍又一遍。我想我可以有两
使用 pip 或 pip3 安装 pytest 将为 Python2 和 pytest 安装 pytest > 分别适用于Python3。但两者都需要通过输入相同的命令pytest来调用......这
我在使 rem 中的 min-width 与百分比宽度共存时遇到了一些问题。 When resizing this jsfiddle the outer right block is going un
对于在 Windows 7 上从 Java 6 迁移到 Java 7 运行时的迁移项目,我们希望获得以下情况: 机器上同时安装了 JRE 6 和 JRE 7 JRE 6 设置为默认值 JRE 7 将由
我是一名优秀的程序员,十分优秀!