我有一个包含151列的表,第一列是绑定到用户的主ID。
该表的目的是跟踪一个人是否完成了一项任务,其中有150项任务。我可能会有成千上万的人为自己的任务列表拥有一个独特的行。
列中填充了0到3之间的值,用于标识每个任务的完成级别。
我需要运行一个查询,该查询将清楚地计算特定行中“3”的数量并生成一个数字。然后,我会将该数字除以150,以便为特定玩家提供完成百分比。
我会将此查询嵌入到一个num_row查询中,该查询显示列表中的所有用户,并将上述所需的查询计数作为显示的列之一。
我以前有一个查询可以在没有num_row列表的页面上工作,但是当我将查询嵌入num_row列表时,它只显示数百个中的第一行。
哪里/我的错误是什么?
$query9 = "SELECT * FROM ztnexus_ztnprints WHERE playerbp_id='$player_id' ";
$result9 = mysql_query($query9);
$numfields9 = mysql_num_fields($result9);
$row = 0;
for($i=0; $i < $numfields9; $i++){ if(mysql_result($result9, $row, $i) == '3'){ $name[$bpcount] = mysql_field_name($result9, $i); $bpcount++; } }
if (empty($bpcount)) { $bpcount = 0; }
$bp1 = ($bpcount / 150) ;
$bp2 = number_format($bp1, 2) ;
$blueprints = ($bp2 * 100) ;
'$ blueprints'是所需的百分比输出。
谢谢。
*的 修改 * 我将添加一个我的表的可视示例:
FIELDS ---> | user_id | task_1 | task_2 | task_3 | etc... |
----------------------------------------------------
ROWS -----> | 1 | 2 | 3 | 0 | 2 |
| 20 | 3 | 2 | 3 | 1 |
| 55 | 3 | 1 | 3 | 2 |
----------------------------------------------------
我需要我的查询来计算每个用户的三分数。
答案 0 :(得分:0)
您的数据模型并不真正符合您要完成的任务,并且在代码发展过程中添加任务需要更改数据模型时,它很脆弱。
我建议改为创建主/详细(或父/子)表关系。有一个表有玩家信息,另一个表有任务完成信息(每个玩家每个任务一行,由玩家ID链接)。
这种类型的查询然后成为子表的一个非常简单的查询。
答案 1 :(得分:0)
感谢您的帮助,但我最终使用了
SUM( IF(column=3,1,NULL) + IF(column2=3,1,NULL)=
等....
我也弄清楚为什么我之前的代码与numrow列表冲突,我在列表查询中遇到了与{/ p>冲突的i=0;
for($i=0; $i < $numfields9; $i++)
来自列计数查询。
我必须以这种方式工作,因为我的网站所有表都绑在一起的时尚。再一次感谢你的帮助!