2012-09-11 83 views
-2

我有一個包含151列的表,第一個是與用戶綁定的主ID。MYSQL - 計算包含相同數據的單行中的列

該表的目的是追蹤一個人是否完成了一項任務,並有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

哪裏的num_row列表? – Barmar

+0

num_row列表正常工作,此查詢嵌入到重複的html表格行中,以便查詢列出的每個用戶。 – Aesirnaut

+0

你寫道,當我將查詢嵌入到num_row列表中時,這不起作用。所以如果你想讓我們告訴我們它錯在哪裏,那麼你需要告訴我們該代碼。 – Barmar

回答

0

你的數據模型並不真正適合你所要完成的是什麼,它是在這個意義上脆弱,添加任務,隨着代碼的改進需要一個數據模型的變化。

我會建議,而不是創建一個主/細節(或父/子)表關係。讓一張桌上有玩家信息,另一張桌上有任務完成信息(每個玩家每個任務一行,由玩家ID鏈接)。

這種類型的查詢,然後成爲一個非常簡單的查詢子表。

+0

感謝您的回覆,但是您錯過了這確實是一個父母子模型的事實,該表僅包含任務完成信息。這張表只保存第一列中的用戶ID號碼 – Aesirnaut

+0

但是最好有一個帶有UserID,TaskID,CompletionLevel列的表格,而不是每個任務的列。 – Barmar

+0

@AesirValhallyn:我會有一行* per任務*。你有1:1的表關係,我建議1:N,然後,你會意味着發出'SELECT COUNT(user_id)FROM TaskTable WHERE user_id = $ player_id AND task_stage = 3'。 –

0

感謝您的幫助,但我最終使用

SUM(IF(column=3,1,NULL) + IF(column2=3,1,NULL)=等....

我也想通了爲什麼我以前的代碼衝突與numRow行名單,我在列表中查詢了i=0;這發生衝突與

for($i=0; $i < $numfields9; $i++)

從列數查詢。

我只是要這樣工作,它是由於所有的表我的網站捆在一起的時尚。再一次感謝你的幫助!

相關問題