2012-05-16 47 views
1

我有2个表tbl_UserRegistrationtbl_Streaks与结构是这样的:什么可以是sql查询?

tbl_UserRegistration

   DATATYPE LENGTH 
UserName  Text   25 (PRIMARY KEY) 
PhotoLink  Text  150 
DeviceToken Integer  15 
DeviceType  Integer  1 

tbl_Streaks

  DATA TYPE  LENGTH 
ID   Integer   10 (PRIMARY KEY) 
Player1  Text   25 
Player2  Tex    25 
Streaks  Integer   10 

现在我要取的球员谁拥有最高纪录的PHOTOLINK。

编辑:

i.e. Player1, Player2, MAX(streak), Photolink 

我怎样才能做到这一点?

什么是sql查询?

感谢..

注意 - Player1Player2UserName相等..

+1

你的意思是说PLAYER1,Player2和用户名始终具有相同的值为什么我们在条纹表中有2列Player1和player2,这里有什么关系。 – Murtaza

+1

这两个表格之间是否有任何共同的字段,即您可以加入的字段? – whytheq

+1

你有没有尝试SQL可以添加到这个问题? – whytheq

回答

1

您可以通过两次加入tbl_UserRegistration来为两位用户检索PhotoLink。为了让一对选手谁得分最多的,你可以在Streak从高到低的顺序对行进行排序,并将其限制为只有一排,就像这样:

SELECT 
    s.Player1, 
    s.Player2, 
    s.Streak, 
    u1.PhotoLink AS PhotoLink1, 
    u2.PhotoLink AS PhotoLink2 
FROM tbl_Streaks s 
    INNER JOIN tbl_UserRegistration u1 ON u1.UserName = s.Player1 
    INNER JOIN tbl_UserRegistration u2 ON u2.UserName = s.Player2 
ORDER BY s.Streak DESC 
LIMIT 1 
+0

非常感谢。有用。 :) – Rohan

1

假设用户名是一样的PLAYER1和Player2那么你可以加入到tbl_Streaks和tbl_UserRegistration SELECT子句中找到MAX条纹的()与PLAYER1和Player2

沿着以下是在T-SQL,并将拔出每用户名最大条纹:

SELECT 
    r.UserName 
    , MAX(s.Streaks) mx  
FROM 
    tbl_UserRegistration r 
    INNER JOIN tbl_Streaks s ON 
     r.UserName = s.Player1 
GROUP BY 
    r.UserName 
+1

添加了一个小T-SQL的例子(我不知道MySQL) – whytheq