我渴望连接两个表,但似乎无法正确处理,其结构如下所示。
表1(成员)
[UserLogin |名称 ]
表2(文章)
[ArtID |作家|内容]
Article.writer指向Member.UserLogin
我想显示的代码尽可能少,既要显示已注册的UserLogins的整个列表,又要显示他们可能写了多少篇文章,或者如果他们没有写任何文章,那么它们也应该仍然显示在列表中。
我想要的是:
[UserLogin |姓名|文章]
到目前为止,我得到的是:
SELECT UserLogin, Name, Writer, count(*)
FROM Article
INNER JOIN Members on Writer=UserLogin
GROUP BY UserLogin;
要么
SELECT UserLogin, Name, count(Writer)
FROM Article
LEFT JOIN Members ON UserLogin = Writer
GROUP BY 1;
他们两个都列出了mysql中所有可用的东西,但是它们都没有包含从未登录过文章的用户登录名和用户名。你们能指出我正确的方向吗?我了解查询的问题,但是我不知道如何解决。
我在这个论坛上发现了类似的问题,但是我还没有找到任何解决方案。可能是语言障碍,或者仅仅是根本缺乏基本的mysql知识。
最佳答案
您可以使用子查询
SELECT m.UserLogin,
m.Name,
(SELECT COUNT(*)
FROM Articles
WHERE Writer = m.UserLogin) ArticlesWritten
FROM Members m
样本输出:
| USERLOGIN | NAME | ARTICLESWRITTEN |
---------------------------------------
| user1 | Jhon | 2 |
| user2 | Helen | 0 |
这是 SQLFiddle