2012-02-03 2 views
2

2 대신 1 개의 쿼리를 사용하여이를 수행하는 올바른 구문은 무엇입니까?중첩 쿼리 구문 개선

$result = mysql_query(SELECT * FROM users); 

while($row = mysql_fetch_array($result)){ 
    $result = mysql_query(SELECT SUM(balance) FROM users_account WHERE uid=$row[id]); 
} 

답변

0

이 모든 레코드를 반환은 USER_ACCOUNT 사용자 정보 테이블 형태 : -

SELECT SUM(ua.balance),u.*,ua.* FROM users_account ua 
    left join users u on ua.users_account=u.id 
    GROUP BY u.id 
0
$result = mysql_query(SELECT a.*, b.SUM(balance) AS user_balance FROM users a, users_account b WHERE uid=$row[id]); 
1

당신은 내부 사용자 테이블로 두 테이블 그룹에 가입해야합니다. SELECT 절에 열을 더 추가 할 수 있으며, 동일한 열을 GROUP BY 절에 추가하여 표준 SQL 문을 가져야합니다.

$query = " SELECT u.uid, SUM(a.balance) 
      FROM users_account a 
      INNER JOIN users u 
      ON u.uid = a.uid 
      GROUP BY u.uid"; 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result)){ 
    ... 

필요하면 문자열을 연결하십시오.

+0

@MichaelLWatson을, 이건 당신을위한 솔루션입니다? 나는 대답을 개선해야합니까? – danihp