首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在一对多关系中从主表中获取单个记录,并从另一个表中获取有关该记录的详细信息?

如何在一对多关系中从主表中获取单个记录,并从另一个表中获取有关该记录的详细信息?
EN

Stack Overflow用户
提问于 2018-07-31 03:21:58
回答 1查看 35关注 0票数 0

作业(主表)

id | name | status

任务(详细信息表格)

id | result | job_id

PS:结果列的值可以是deliveredundeliveredunknown

我想在单行中按id获取一个作业,并按结果类型求和它的详细信息,如下所示:

job_id | job_name | job_status | delivered | undelivered

我已经尝试了以下,但没有成功,因为我不能以这种方式使用作业列。有什么建议吗?

代码语言:javascript
复制
select jobs.id, jobs.name, jobs.status, sum(case when tasks.result = 
'deliverable' then 1 end) as deliverable,
sum(case when tasks.result = 'undeliverable' then 1 end) as 
undeliverable from jobs, tasks where jobs.id = 
tasks.job_id and jobs.id = 'We3dJzS4C1wysafM';
EN

回答 1

Stack Overflow用户

发布于 2018-07-31 09:19:37

使用公用表表达式(CTE)-

代码语言:javascript
复制
with deliverable_tasks as (
select t.job_id, count(*) as deliverable_count
from tasks t
where t.result='deliverable'
group by t.job_id
),
undeliverable_tasks as 
(
select t.job_id, count(*) as undeliverable_count
from tasks t
where t.result='undeliverable'
group by t.job_id
)
select
  j.id,
  j.name,
  j.status,
  dt.deliverable_count,
  ut.undeliverable_count
from jobs j
left join deliverable_tasks dt on dt.job_id=j.id
left join undeliverable_tasks ut on ut.job_id=j.id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51600916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档