2014-04-27 89 views
1

我有一个子查询选择查询在其上表:加入计数从一个表从另一个选择 - mysql的

select UserName, Name, anniversaryDate, RegionCode 
from a where UserName in 
(
    select Username from 
    (
     select Username, max(timeUsed) 
     from log_table where role='Cou' 
     group by Username order by max(timeUsed) desc limit 10 
    ) a 
) 

的正常工作,现在我已经叫另一个表B, 上表我只有3列:

用户名,PNAME和反馈

,每个用户名多次有,我想加入到我的第一个查询每个用户名,我从第一个查询得到的计数。

为eaxmple:

SELECT COUNT(UserName) FROM b where UserName='Admin' group by UserName 

如何加入从第二查询到的第一个结果?

表:

log_table:
ID - 诠释,AI,PK
用户名 - VARCHAR
行动 - 诠释
TIMEUSED - 日期时间
角色 - varchat

一个:
用户名 - varchar,PK
名称 - varchar
anni versaryDate - 日期时间
RegionCode - 诠释

B:
用户名 - VARCHAR
PNAME - VARCHAR
反馈 - VARCHAR

+1

你应该真的使用连接而不是嵌套选择。请分享您的表格结构,这将帮助我们找出帮助您的方法。 – rekaszeru

+0

事情就是这样的:我需要得到最后10个用户对我的应用程序(嵌套选择)进行操作,然后从表a(主要选择)获取有关这些用户的基本信息,然后仅显示加上他们从表b的计数 – Kadosh

+0

好的,谢谢你清理那个。共享你的表格结构将有助于复制情况和提供样品,但你也可以通过这种方式获得元回答:) – rekaszeru

回答

0

根据你的表结构下面的查询可能会增加你正在寻找所需的列for:

select users.UserName, Name, anniversaryDate, RegionCode, 
     Coalesce(count(b.UserName),0) as cnt 
    from users 
     left outer join (select Username, max(timeUsed) 
      from log_table where role='Cou' 
      group by Username order by max(timeUsed) desc limit 10 
     ) a using (UserName) 
     left outer join fedbacks b on (a.UserName = b.userName) 
     group by users.UserName; 
+0

它由于某种原因返回我cnt 0,尽管在表b用表名称a – Kadosh

+1

role ='Cou'?区分大小写。 – rekaszeru

+1

现在工作,忘记改变其中的一个值:) – Kadosh

相关问题