sql - 文本名称上的 SQL 连接表(而不是按 id)
问题描述
我想问你是否可以通过非主键或外键的名称字段加入表?我有一个具体的例子:
在此示例中,我有来自 2 个不同应用程序的票证,每个应用程序都以不同格式给我票证名称 + 用户名(因此不可能使其成为 user_role 表中的唯一 ID)。
我目前的要求是这样的:
SELECT ticket_created_app1.user_name, count(ticket_created_app1.id),u.main_name
from user_roles u
LEFT JOIN u on u.name_2 like ticket_created_app1.user_name
group by ticket_created_app1.user_name, u.main_name;
如您所知,我希望为每个用户创建票证数量并显示来自 user_roles 的 main_name。
但是,所有列 u.main_name 都是空的。
解决方案
我想为每个用户创建票证的数量并显示来自 user_roles 的 main_name。
您可以离开加入两个聚合查询:
select
u.main_name,
coalesce(t1.cnt, 0) + coalesce(t2.cnt, 0) nb_tickets
from user_roles u
left join (
select user_name, count(*) cnt
from ticket_created_application1
group by user_name
) t1 on t1.user_name = u.name2
left join (
select user_name, count(*) cnt
from ticket_created_application2
group by user_name
) t1 on t1.user_name = u.name1
如果您想要两个不同列中的数字,则:
select
u.main_name,
coalesce(t1.cnt, 0) nb_tickets1,
coalesce(t2.cnt, 0) nb_tickets2
from ...
推荐阅读
- django - 无法覆盖模型 save()
- php - 完全排除 Woocommerce 中运输的所有邮政信箱变体
- c++ - 错误:对“set_union”的调用没有匹配
- javascript - 为什么我的对象没有将数据填充到图表中?(包括演示)
- flutter - 在兄弟姐妹之间传递数据 - 颤振
- assembly - 从装配中另一段中存在的矩阵单元读取
- php - 如何从 gitlab-ci.yml 将环境导出到 PHP 文件中
- c++ - 如何为新项目使用仪器驱动程序和头文件/静态库
- ios - 使用自定义 UITableIView 时无法将具有标识符的单元格出列
- tfs - DevOps Server 2019.0.1(Azure DevOps 错误 - TF30063:您无权访问 tfs。)