2016-12-02 31 views
0

我相信這是一個很好的方法。我搜索並嘗試,但無法找到。 我想加入三個表是這樣的(或更好的辦法,請建議)我該如何在一次加入三張桌子時總結一列

SELECT listing.*, users.username, review.rNumber 
    FROM listing, users,review 
WHERE users.uid=listing.cuid and listing.lid=review.lID 

但我不希望review.rNumber我想它和像sum(rNumber)。因爲一個上市可以有許多評論..謝謝你..

這裏是我想要實現這個查詢

  1. 從上市表中的所有值是什麼。
  2. 只能從用戶表用戶名評論的
  3. 總和從檢查表

的關係是

  • users.uid = listing.cuid和listing.lid = review.lID 或
  • users.uid = listing.cuid = review.sellerID

Please l等我知道如果我需要添加表.. 謝謝:)

+1

不喜歡。你有沒有嘗試'SUM(review.rNumber)'? http://www.mysqltutorial.org/mysql-sum/ – JustOnUnderMillions

+0

非常感謝你,,,我嘗試過,但可能是在做一個錯誤的方式,如review.sum(rNumber),並得到錯誤 – sadek

+0

您能否請幫助我怎麼能返回上市有審查的所有上市天氣。這樣它只會選擇有評論的列表。 可能會被加入?再次感謝你.. – sadek

回答

0

你可以得到適當組用戶的總和,但與所有的上市結果加入你可以使用一個DINAMIC加入

SELECT listing.*, t.username, t.sum_rNumber 
fFROM listing 
INNER JOIN users ON users.uid=listing.cuid 
INNER JOIN review ON listing.lid=review.lID 
INNER JOIN (
     SELECT users.username as username, sum(review.rNumber) sum_rNumber 
     FROM listing 
     INNER JOIN users ON users.uid=listing.cuid 
     INNER JOIN review ON listing.lid=review.lID 
     GROUP BY users.username 
    ) t on users.username = t.username 

(並且更具可讀性的明確加入sintax)

+0

你的代碼沒有工作。給出未知列錯誤。然後我嘗試這種方式 SELECT listing。*,t.username FROM listing INNER JOIN users ON users.uid = listing.cuid INNER JOIN review ON listing.lid = review.lID INNER JOIN(SELECT users.username as username,sum( review.rNumber)sum_rnNumber FROM listing INNER JOIN users ON users.uid = listing.cuid INNER JOIN review ON listing.lid = review.lID GROUP BY users.username)t on users.username = t.username 但它會重複結果 – sadek

+1

錯誤的sum_rnNumber而不是sum_rNumber .answer更新.. obviusly重複每行的結果..如果你想所有列表列(列表。*)沒有一個適當的..組.. ..你應該解釋你真正需要的聚合列然後使用這些列來計算相關總和並與主選擇一起加入。 ..最終顯示您想要進行聚合的實際列,或者重複所有列中的列,並按ID加入。 – scaisEdge

相關問題