2012-02-06 70 views
0

我有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列来代表总数。

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

仅供参考 - 我已经尝试改变

products_users.`graph_id` as objects_liked 

count(products_users.`graph_id`) as objects_liked 

但只有结果:

enter image description here

请帮帮忙!

回答

2

我觉得这是一个有点混乱,你如何期望得到user1, 4 user2, 7 user3, 28 etc.结果和你被users.*, products_users.fbid, products_users.graph_id选择。我假设第一个结果是你期望得到的结果。

以下查询将向您显示用户及其在products_users表中显示的次数(我明白您正在查找的是)。我在猜测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 

希望有所帮助。

0

试试这个:

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