如何从另一个表中的字段获取计数 - MySQL

时间:2014-01-29 16:15:17

标签: mysql select count left-join

我有以下查询:

SELECT t.id, t.name, t.tags, t.privacy, t.about, t.views, t.registered, t.updated, i.image_id
                FROM x_trybes t
                LEFT JOIN x_trybe_images i
                ON t.id = i.trybe_id

除了这个查询,我还有一个名为:

的表

x_trybes_likes,具有以下结构

id | trybe_id | PROFILE_ID

id是主键 trybe id是此表与x_trybes&之间的关系。 x_trybe_images表 和个人资料ID,它与喜欢x_trybe的用户有关。

我如何附加我的查询来促进计数,例如4个人喜欢生物学尝试。即x_trybes_likes表中有4行?任何人都可以提供解决方案吗?

我已经尝试了这个但是由于某种原因它返回了第一行:\:

SELECT t.id, t.name, t.tags, t.privacy, t.about, t.views, t.registered, t.updated, i.image_id, COUNT(l.trybe_id) AS likes
                FROM x_trybes t
                LEFT JOIN x_trybe_images i
                ON t.id = i.trybe_id
                LEFT JOIN x_trybes_likes l
                ON t.id = l.trybe_id

由于

1 个答案:

答案 0 :(得分:1)

您错过了GROUP BY

放手一搏:

SELECT t.id, 
       t.name, 
       t.tags, 
       t.privacy, 
       t.about, 
       t.views, 
       t.registered, 
       t.updated, 
       i.image_id, 
       COUNT(distinct l.id) AS likes
                FROM x_trybes t
                LEFT JOIN x_trybe_images i
                ON t.id = i.trybe_id
                LEFT JOIN x_trybes_likes l
                ON t.id = l.trybe_id
group by t.id, 
         t.name, 
         t.tags, 
         t.privacy, 
         t.about, 
         t.views, 
         t.registered, 
         t.updated, 
         i.image_id;