我有三个数据库表:
门票:包含两个columns id,title
优惠:它包含三个columns id,title,ticket_id,accepted_offer_id
已接受的报价:包含两个columns id,result
accepted_offer_id是accepted_offer的外键
ticket_id是Tickets的外键
我让我的用户添加门票,每个门票包含许多优惠,每个优惠最终都会有一个结果,赢或输,或取消,或等待。
如果没有等待的优惠,则认为彩票已完成(所有优惠都赢了、输了或取消了)。
我想要计算所有他们提供的所有门票的完成门票count(id) from tickets的数量已经有了一个结果(没有等待)。
我可以使用以下查询来获取所有已完成的票证,但直到现在才能使用带有count函数的单个查询对它们进行计数:
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函数来直接找出这张完成的票证的计数,而不需要带上所有这些信息。有可能吗?
发布于 2014-08-02 20:01:24
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尝尝这个
https://stackoverflow.com/questions/25094603
复制相似问题