mysql计算不同的正值但计算表中的所有-1值并给出总计?

时间:2013-04-09 06:23:18

标签: mysql sql

我有一个名为ptb_profile_views的表,如下所示:

id | profile_id | viewed_profile_id
1        2              6
2        2              6
3        3              6
4       -1              6
5       -1              6

我一直试图将'profile_id'中的正值仅作为不同的值计算一次,并将-1值计算为与以下查询一样多的次数:

function check_profile_views3() {
global $connection;
global $_SESSION;
$query = "
SELECT id,profile_id,viewed_profile_id COUNT
FROM ptb_profile_views 
WHERE profile_id > 0
GROUP BY profile_id
UNION
/*shows all -1 profile id's*/
SELECT id,profile_id,viewed_profile_id 
FROM ptb_profile_views 
WHERE profile_id <= 0";
$check_profile_views_set3 = mysql_query($query, $connection);
confirm_query($check_profile_views_set3);
return $check_profile_views_set3;       
        }

所以最终的结果是

2, 3, -1, -1

但不是自己回显实际值,而是希望查询对值进行计数。

所以...

2, 3, -1, -1 = a total of 4

我也试图调用这样的查询,我不知道是否会起作用:

$check_profile_views_set3 = check_profile_views3();
while ($views3 = mysql_fetch_array($check_profile_views_set3)) { 

echo "".$views3['profile_id'].""; ?>

有人可以告诉我我该怎么做吗?感谢

1 个答案:

答案 0 :(得分:0)

SELECT a + b AS TotalCount
FROM
        (
          SELECT COUNT(DISTINCT profile_ID) a
          FROM   ptb_profile_views
          WHERE  profile_ID > 0
        ) x,
        (
          SELECT COUNT(profile_ID) b
          FROM   ptb_profile_views
          WHERE  profile_ID < 0
        ) y