2012-11-03 35 views
0

我有一个结果作为加入不同行和多个SELECT语句两个表

select D.name as username, E.maxViews AS EmaxViews from (select A.video_id, A.uploaded_by AS username,max(B.numViews) AS maxViews,count(*) AS C from Videos A, (select video,count(*) AS numViews from Views GROUP BY video) B where A.video_id=B.video GROUP BY A.uploaded_by) E, Users D where D.username=E.username 

这给我列作为username,EmaxViews,并给了我93行

和我有另一个表作为Users (username,date_registered,name)其中有在这100个查询

我想加入我上面的两个查询作为一个单一的表作为

username, date_registered, EmaxViews 

我试过这样

select name, date_registered,G.EmaxViews from Users F LEFT OUTER JOIN (select D.name as username, E.maxViews AS EmaxViews from (select A.video_id, A.uploaded_by AS username,max(B.numViews) AS maxViews,count(*) AS C from Videos A, (select video,count(*) AS numViews from Views GROUP BY video) B where A.video_id=B.video GROUP BY A.uploaded_by) E, Users D where D.username=E.username) G ON F.username=G.username ORDER BY F.date_registered; 

现在我得到100行和正确的价值观的名称和date_registered但我正在逐渐为NULL为EmaxViews所有的行..

什么是错我的查询?

+0

你能给我们从你正在寻找从中读取数据的表格样本? – Codeguy007

回答

1
SELECT u.name AS username, 
     u.date_registered, 
     COALESCE 
       (
       (
       SELECT COUNT(*) cnt 
       FROM video v 
       JOIN views vw 
       ON  vw.video = v.video_id 
       WHERE v.uploaded_by = u.name 
       GROUP BY 
         v.video_id 
       ORDER BY 
         cnt DESC 
       LIMIT 1 
       ), 
       0 
       ) AS EmaxViews 
FROM users u 
+0

不..我很抱歉..我在第二个查询中给出了错误的列名..我解决了它..谢谢 – ILuvProgramming

0

没有..我抱歉..我在第二个查询给错列名..我解决了它..感谢