-1

次のような 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 回だけカウントし、-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'].""; ?>

誰かが私にこれを行う方法を教えてもらえますか? ありがとう

4

1 に答える 1

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
于 2013-04-09T06:25:03.393 に答える