2013-04-09 72 views
-1

我有一个表称为ptb_profile_views看起来像这样:mysql计数不同的正值,但计算表中的所有-1值并给出总数?

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'].""; ?> 

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

回答

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 
+0

是可以添加一个条件的话和PROFILE_ID!= “$ _ SESSION [ 'USER_ID'。” – 2013-04-09 06:43:36

+0

是的,在子查询中加入他们两个。 – 2013-04-09 06:44:23

相关问题