繁体   English   中英

执行带计数的多表内部/左侧/右侧联接(或相关子查询)?

[英]Performing a multi-table inner/left/right join (or correlated subquery) with count?

我想知道如何使用以下结构精确执行三向联接(简化)

**Table 1:**
vote.id
vote.item_id

**Table 2:**
item.id
item.owner_id

**Table 3**
owner.id

我的目标基本上是计算“所有者”所拥有的票数。 我一直认为我可以使用相关子查询简单地做到这一点,但是如果票数巨大,那似乎将是一场性能损失? 也许我错了? 我只是无法像这样在3张(或更多张)桌子周围转头。 是否可以在1个查询中而不是2个步骤中执行此操作?

即:

SELECT owner.id, 
   (SELECT count(SELECT count(vote.id) as Cnt WHERE vote.item_id = item.id) as ItemCnt
   WHERE item.owner_id = owner.id) as TotalCnt 
WHERE owner.id = :id

这样的事情还能工作吗? 有没有更好,更有效的方法来做到这一点?

一如既往地感谢您的任何帮助或建议

就如此容易:

select count(vote.id)
from owner
left join item on (item.owner_id = owner.id)
left join vote on (vote.item_id = item.id)
where owner.id = :id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM