首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在同一查询中对多个表使用count?

如何在同一查询中对多个表使用count?
EN

Stack Overflow用户
提问于 2014-08-02 19:39:25
回答 1查看 28关注 0票数 0

我有三个数据库表:

门票:包含两个columns idtitle

优惠:它包含三个columns idtitleticket_idaccepted_offer_id

已接受的报价:包含两个columns idresult

accepted_offer_idaccepted_offer的外键

ticket_idTickets的外键

我让我的用户添加门票,每个门票包含许多优惠,每个优惠最终都会有一个结果,赢或输,或取消,或等待。

如果没有等待的优惠,则认为彩票已完成(所有优惠都赢了、输了或取消了)。

我想要计算所有他们提供的所有门票的完成门票count(id) from tickets的数量已经有了一个结果(没有等待)。

我可以使用以下查询来获取所有已完成的票证,但直到现在才能使用带有count函数的单个查询对它们进行计数:

代码语言:javascript
复制
SELECT t.id, 
o.ticket_id, 
sum(case when a.result = 0 then 1 else 0 end) as ticket_status 
FROM offers o 
INNER JOIN accepted_offers a ON a.id = o.accepted_offer_id
INNER JOIN tickets t ON t.id = o.ticket_id
WHERE t.user_id = $user_id 
GROUP BY o.ticket_id HAVING ticket_status = 0

总和每增加一个0,表示此报价处于等待状态,因此对于每个工单,如果ticket_status等于0,则表示没有被视为已完成工单的等待报价

我想使用count函数来直接找出这张完成的票证的计数,而不需要带上所有这些信息。有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2014-08-02 20:01:24

代码语言:javascript
复制
SELECT t.id, 
o.ticket_id, 
count(if(a.result = 0)) as ticket_status 
FROM offers o 
INNER JOIN accepted_offers a ON a.id = o.accepted_offer_id
INNER JOIN tickets t ON t.id = o.ticket_id
WHERE t.user_id = $user_id 
GROUP BY o.ticket_id HAVING ticket_status = 0

尝尝这个

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25094603

复制
相关文章

相似问题

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