【问题标题】:How to get a count from a Field in another Table - MySQL如何从另一个表中的字段中获取计数 - MySQL
【发布时间】:2014-02-21 13:53:53
【问题描述】:

我有以下疑问:

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,结构如下

标识 | trybe_id | profile_id

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

我如何附加我的查询以方便计数,例如 4 人喜欢生物试验。 IE。 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

谢谢

【问题讨论】:

    标签: mysql select count left-join


    【解决方案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;
    

    【讨论】:

    • 感谢汤姆的回复!我需要调查一下,之前没有使用 Group By,这是它不起作用的原因吗?我会尽可能接受答案
    • 不用担心。这里有更多关于COUNT 的信息(它也有关于GROUP BY 的一些信息):dev.mysql.com/doc/refman/5.7/en/…。祝你好运!
    猜你喜欢
    • 2012-08-10
    • 2015-10-14
    • 1970-01-01
    • 2016-09-28
    • 2010-09-18
    • 2015-11-10
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    相关资源
    最近更新 更多