如何修改此查询以获取特定列的计数?

时间:2012-02-06 04:07:43

标签: mysql

我有2个表用户和products_users。

我想让所有用户将他们的FBID放在预定的列表中...但是我还想得到他们在products_users表中出现的次数的总数...(这实际上显示了多少不同的产品用户在我的网站上“喜欢”)

最后我想要:

user1, 4
user2, 7
user3, 28
etc.

问题在于让计数发挥作用。

我目前有这个:

select users.*
    , products_users.fbid
    , products_users.`graph_id` as objects_liked 
    from users 
        inner join products_users 
            on (products_users.`fbid` = users.fbid) 
            and products_users.`fbid` in ('0_fbid','1_fbid')

导致以下结果:

enter image description here

但是,我希望每一行都是唯一用户,而objects_liked列则表示TOTAL计数。

有办法做到这一点吗?请帮忙!

仅供参考 - 我已经尝试过更改

products_users.`graph_id` as objects_liked

count(products_users.`graph_id`) as objects_liked

但这只会导致:

enter image description here

请帮忙!

2 个答案:

答案 0 :(得分:2)

我觉得有点令人困惑的是,您希望得到user1, 4 user2, 7 user3, 28 etc.因为users.*, products_users.fbid, products_users.graph_id选择users。我假设第一个结果是你期望获得的结果。

以下查询将向您显示用户及其在products_users表中显示的次数(我知道这正是您要查找的内容)。我猜测select users.name, count(*) as count_of_rows_in_products_users_table from users inner join products_users on (products_users.fbid = users.fbid) where products_users.fbid in ('0_fbid', '1_fbid') group by users.name 列是因为你没有提供它们。

{{1}}

希望有所帮助。

答案 1 :(得分:0)

试试这个:

SELECT Distinct UsersID, iResult.iCount
FROM Users LEFT JOIN
    (SELECT fbid, COUNT(*) as iCount 
     FROM products_users
     GROUP BY fbid) as iResult