2013-09-27 40 views
0

所以我有以下查詢,它提取組織內的主動競爭,並嘗試獲取領先競爭對手的用戶。運行在另一個SQL查詢的循環中的SQL查詢?

目前查詢獲取正確積極的比賽,併爲每個用戶的totalPoints。現在抓住所有的用戶,我只希望它搶頂級用戶,所以我假設的解決之道在於GROUP BY查詢,某種LIMIT的?

在此圖像中,你可以看到我得到的結果。正如你所看到的,每次比賽我都會得到每個用戶,我只需要每個比賽的頂級用戶。

http://i.imgur.com/5OXen4e.png

對我怎麼能解決這個任何想法?

SELECT c.competitionId, c.name, c.start_date, c.end_date, a.userid, u.name, u.profilePic , 

SUM(activity_weight) AS totalPoints 

FROM activity_entries a INNER JOIN users1 u ON u.id = a.userid INNER JOIN competitions c ON c.competitionId = a.competitionId 

WHERE c.organisationId = 1 AND c.start_date < now() AND c.end_date > now() 
GROUP BY a.userid, c.competitionId ORDER BY c.id DESC 
+1

提供表結構plz –

+0

select * from table inner join(select * from table2)as temp_table2 on temp_table2.id = table.id – AdrianBR

+0

正如@Nadeem_MK所示,如果您需要更詳細的幫助,請考慮提供適當的DDL和/或共同的sqlfiddle與期望的結果 – Strawberry

回答

0

還有一個更好的辦法。只需運行一個查詢並加入比賽表。您發佈的第二個查詢顯示您知道如何連接表。

+0

正確,我知道如何加入表格,但我有點困惑它是否會正確循環?我會放棄它,謝謝! – user2656127

+0

另外,如果我從第一個查詢中獲得這些信息,那麼如何在第二個查詢中定義competitionId?哼! – user2656127

+0

使用單個查詢,也沒有必要循環。至於你的第二個評論,competitionId是你用來加入比賽表的領域。如果您需要它,請將其包含在您的select子句中。 –