2013-01-09 70 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 
相关问题