0

I need to know if the last 5 entry's in a table were placed by the same userid (in the code below the user id is frozen_by.

Here's what I have

//count if the last 5 freezes was placed by the same user

$strFind="SELECT COUNT(*) AS `total` FROM `contest_frozen` WHERE `contest_id`=\"$pid\" AND `frozen_by`=\"$curmemid\" ORDER BY `id` DESC LIMIT 5";
$result=mysql_query($strFind) or die(mysql_error());
$row=mysql_fetch_array($result);
$freeze_total=$row['total'];

if($freeze_total>=5){
//do this
}

if($freeze_total<5){
//do this
}
4

1 に答える 1

1

次のようなクエリを使用できます: 最後の 5 行の異なるユーザーの数を返します。また、最高のユーザー ID も返すため、そのユーザーが最後の 5 つのレコードを配置したことがわかっている場合UserCount == 1MaxUser == $curmemid

SELECT
  count(distinct frozen_by) as UserCount,
  max(frozen_by) as MaxUser
FROM 
  contest_frozen
WHERE 
  contest_id = $pid 
ORDER BY 
  `id` DESC 
LIMIT 5

明示的なカウントが必要な場合は、それも可能です。以下のクエリは、指定されたユーザーのレコード数と他のユーザーのレコード数を返します。ThisUserCount == 5 の場合、5 つのレコードすべてがそのユーザーのものです。

SELECT
  sum(case when frozen_by = $curmemid then 1 else 0 end) as ThisUserCount,
  sum(case when frozen_by = $curmemid then 0 else 1 end) as OtherUserCount

FROM 
  contest_frozen
WHERE 
  contest_id = $pid 
ORDER BY 
  `id` DESC 
LIMIT 5
于 2012-10-28T17:15:49.913 に答える