0

我有一个结果

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 行以及 name 和 date_registered 的正确值,但我得到了所有行的 EmaxViews NULL ..

我的查询有什么问题?

4

2 回答 2

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
于 2012-11-03T22:21:26.847 回答
0

不..对不起..我在第二个查询中给出了错误的列名..我解决了..谢谢

于 2012-11-03T22:39:12.003 回答