2013-01-09 73 views
0

我有3個表MySQL的 - 選擇用戶名來自兩個不同的表在一個查詢

  • 用戶表的用戶名和用戶ID,
  • 與用戶ID用戶的領導人板和得分
  • 領袖與用戶ID和numOfLikes喜歡的董事會

我想選擇最喜歡的用戶的名稱和最高分的用戶的名稱。但我的問題是,當我寫查詢時,我在那裏複製了name字段。我該怎麼辦?

+3

秀德查詢。可以幫助 – danihp

+0

通過名稱或組使用不同的關鍵字 –

+0

您是否只想擁有最喜歡和得分最高的單一用戶?或者你想要返回所有用戶? – Taryn

回答

1

我用下面的我的查詢三個表

  1. 用戶表 - 包含用戶名和用戶ID
  2. 表2 - 包含用戶名和得分
  3. 表3 - 包含用戶標識和numOfLikes

要獲得用戶的詳細信息,最大比分使用以下

select usrtbl.username,usrtbl.userid,tbl2.score from usertable usrtbl inner join table2 tbl2 on usrtbl.userid=tbl2.userid order by tbl2.score 
desc limit 1 

要獲得喜歡的最大數量的用戶詳細信息使用以下

select usrtbl.username,usrtbl.userid,tbl3.numOfLikes from usertable usrtbl inner join table3 tbl3 on usrtbl.userid=tbl3.userid order by tbl3.numOfLikes 
desc limit 1 

要獲得所有在一個查詢使用下面的查詢

select usrtbl.username as 'user_with_max_score',usrtbl.userid as 'userid_of_user_with_max_score', 
tbl2.score as 'max_score',usrtbl2.username as 'user_with_max_likes',usrtbl2.userid as 'userid_of_user_with_max_score' , 
tbl3.numOfLikes as 'max_likes' from usertable usrtbl2 inner join table3 tbl3 inner join usertable usrtbl inner join table2 tbl2 
on usrtbl.userid=tbl2.userid and usrtbl2.userid=tbl3.userid order by tbl2.score desc,tbl3.numOfLikes desc 
limit 1 
+0

是的,但是如何將它們放入一個查詢? –

+0

@Babibu - 你想找到用戶與最高分和用戶最喜歡在一個查詢? –

+0

是的,和我不能使用名稱鍵兩次的問題... –

0

您可以表名。名稱選擇

2

使用別名可以幫助你

SELECT a.id as id_a, 
    b.id as id_b, 
    c.id as id_c 
from a 
inner join b 
    on a.id = b.a_id 
inner join c 
    on a.id = c.a_id 
+0

我認爲別名正是我正在尋找的。但看看@Fathah Rehman P的答案,你如何使用別名來做一個查詢?我的重複不在聲明中(只是使用用戶ID),但在數據中(兩個結果中我有一個用戶名,我不能使用「name」鍵兩次) –

1

您可能正在使用SELECT *。您應指定的字段名稱:

SELECT u.user_id, u.name, li.numOfLikes FROM users u INNER JOIN likes li ON (u.user_id=li.user_id) ORDER BY li.numOfLikes 

SELECT u.user_id, u.name, s.score FROM users INNER JOIN scores s ON (u.user_id=s.user_id) ORDER BY s.score 
相關問題