2011-07-22 10 views
0
$usersQuery = 'SELECT user, budget FROM users'; 
$usersResult = mysqli_query($link, $usersQuery); 
while($usersRow = mysqli_fetch_assoc($usersResult)) { 
    $user = $usersRow['user']; 
    $budget = $usersRow['budget']; 
    $spendingsQuery = "SELECT SUM(`cost`) AS spent FROM spendings WHERE user = '$user'"; 
    $spendingsResult = mysqli_query($link, $spendingsQuery); 
    $spendingRow = mysqli_fetch_assoc($spendingsResult); 
    $spent = $spendingRow['spent']; 
    $innerTaleRows .= "<tr><td>$user</td><td>$budget</td><td>$spent</td></tr>"; 
} 

答えて

1

はい:

SELECT users.user AS user, 
     users.budget AS budget, 
     SUM(spendings.cost) AS spent 
FROM users 

LEFT OUTER JOIN spendings 
ON spendings.user = users.user 

GROUP BY users.user, users.budget 
2

はいできます。

MySQLのクエリ:

SELECT users.user as user, users.budget as budget, SUM(spendings.cost) AS spent FROM `users` LEFT OUTER JOIN `spendings` ON spendings.user = users.user 

全コード:

$usersQuery = 'SELECT users.user, users.budget, SUM(spendings.cost) AS spent FROM `users` LEFT OUTER JOIN `spendings` ON spendings.user = users.user'; 
$usersResult = mysqli_query($link, $usersQuery); 
while($usersRow = mysqli_fetch_assoc($usersResult)) { 
    $user = $usersRow['user']; 
    $budget = $usersRow['budget']; 
    $spent = $usersRow['spent']; 
    $innerTaleRows .= "<tr><td>$user</td><td>$budget</td><td>$spent</td></tr>"; 
} 
+0

申し訳ありませんが、これだけを返す1行、@ cdhowieのクエリは、両方を返すのに対し、 (ユーザーテーブルには2人のユーザーがいます)。 –

+0

申し訳ありませんが、私は自分のコードを編集しました。今は動作します – technology

+0

ありがとう、トリックは 'OUTER'にあるはずです。私はいつもこれらが混乱していることを知ります –

0
$usersQuery = 'SELECT SUM(`cost`) as spent, users.user, users.budget AS spent FROM spendings INNER JOIN users on users.user=spendings.user GROUP BY users.user, users.budget'; 
$usersResult = mysqli_query($link, $usersQuery); 
while($usersRow = mysqli_fetch_assoc($usersResult)) { 
    $user = $usersRow['user']; 
    $budget = $usersRow['budget']; 
    $spent = $usersRow['spent']; 
    $innerTaleRows .= "<tr><td>$user</td><td>$budget</td><td>$spent</td></tr>"; 
} 
関連する問題