Hy everyone,在mysql中的複雜連接查詢
我真的需要你的幫助。我必須獲得以下所有用戶的列表(不同): - 在比賽中進行現場簽到(checkins.ctype ='live') - 他們最喜歡的球隊(參見fanusers_teams) - 贏得3個或更多目標區別。
最喜歡的團隊,可能是info_matches.team_id1或info_matches.team_id2或甚至兩者。
下面是相關表小設計:
什麼我試過,效果80%(所以它不會:(),因爲它會返回一些用戶正確的(他們最愛。團隊3 +目標差異),但也返回用戶在這種情況下沒有一個團隊。我認爲他們返回,因爲他們已經爲一個團隊或其他團隊贏得了3球以上的差異
這是我的查詢:
SELECT DISTINCT f.id FROM fanusers f LEFT JOIN checkins c ON f.id = c.fanuser_id LEFT JOIN info_matches m ON m.id = c.match_id WHERE c.ctype = 'live' AND ( m.team_id1 IN( SELECT DISTINCT m1.team_id1 FROM info_matches m1 RIGHT JOIN fanusers_teams ft ON m1.team_id1 = ft.team_id RIGHT JOIN fanusers f ON f.id = ft.fanuser_id WHERE m1.pointsteam1 - m1.pointsteam2 >= 3 ) OR m.team_id2 IN( SELECT DISTINCT m2.team_id2 FROM info_matches m2 RIGHT JOIN fanusers_teams ft ON m2.team_id2 = ft.team_id RIGHT JOIN fanusers f ON f.id = ft.fanuser_id WHERE m2.pointsteam2 - m2.pointsteam1 >= 3 ) )
如果有人成功解決了這個問題,我也會很感激一個關於我做錯了什麼的小解釋。
謝謝。
跳到我身上的是左派加入你從粉絲用戶到簽到;你絕對不希望這樣,因爲你*只需要*已經登記遊戲的用戶。我會在你的分析中開始,看看有沒有其他的OUTER連接應該是INNER。 – coyotesqrl