2017-03-25 41 views
0

需要您的幫助。 php,mysql每個用戶ID來自不同表的總和字段

我有以下項目。

我有兩個表

**table 1** 

user_id Plan 
1   5 
1   7 
2   5 
2   9 
3   7 
1   9 


**table 2** 
Plan  Price 
5   100 
7   200 
9   300 

我必須找到計劃由一個用戶選擇的總成本 如USER_ID = 2必須支付400

我已經下面的代碼,但是這一次增加上例中數據庫中所有計劃的價格總成本= 600 我做錯了什麼? :(

$totalcost = NULL; 

$sql = "select SUM(Plan.Cost) as ANSWER FROM Plan"; 
     $result = mysql_query($sql, $link) or die(mysql_error()); 
     $totalcost = mysql_fetch_row($result); 


      $sql = "select * FROM Plan"; 
     $result = mysql_query($sql, $link) or die(mysql_error()); 
     $rows = mysql_num_rows($result); 

     $Plan = array(); 

     if (is_resource($result)) { 
       while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
        $Plan[] = $row; 
       } 
     } 

回答

0

您的查詢指定user_id,如:

$user_id = 2; // or get it from $_GET, $_POST...  
$sql = "select SUM(Plan.Cost) as ANSWER 
FROM Plan, Users 
WHERE Users.Plan = Plan.Plan AND Users.user_id = $user_id"; 
0

你可能想使用LEFT JOIN在查詢中,這樣就可以讓這樣的事情:

SELECT table1.user_id, table1.plan, SUM(table2.cost) FROM table1 LEFT JOIN table2 ON table1.plan=table2.plan WHERE table1.user_id = $user_id; 

這樣你就可以在1個查詢中獲取結果,並使數據庫做所有的工作,而不是通過函數中的數據循環。

SQL left join tutorial