我渴望加入两个表,但似乎无法正确,结构看起来像这样.
表1(成员) [UserLogin | 名称 ]
表2(文章) [ArtID | 作家| 内容] Article.writer指向Members.UserLogin
我希望尽可能少地显示代码,注册用户登录的完整列表,以及他们可能写了多少篇文章的数量,或者如果他们没有写任何文章,他们也应该在列表中.
我想要的是:[UserLogin | 名称| ArticlesWritten]
到目前为止我得到的是:
SELECT UserLogin, Name, Writer, count(*)
FROM Article
INNER JOIN Members on Writer=UserLogin
GROUP BY UserLogin;
Run Code Online (Sandbox Code Playgroud)
要么
SELECT UserLogin, Name, count(Writer)
FROM Article
LEFT JOIN Members ON UserLogin = Writer
GROUP BY 1;
Run Code Online (Sandbox Code Playgroud)
它们都列出了mysql中的所有内容,但它们都没有包含那些从未编写过任何文章的用户的UserLogins和Names.你们能指出我正确的方向吗?我理解我的查询问题,但我不知道如何解决它.
我在这个论坛上发现了类似的问题,但我没有得到任何解决方案.可能是一个语言barriere或只是一个普通缺乏基本的mysql知识.
pet*_*erm 16
您可以使用子查询
SELECT m.UserLogin,
m.Name,
(SELECT COUNT(*)
FROM Articles
WHERE Writer = m.UserLogin) ArticlesWritten
FROM Members m
Run Code Online (Sandbox Code Playgroud)
样本输出:
| USERLOGIN | NAME | ARTICLESWRITTEN |
---------------------------------------
| user1 | Jhon | 2 |
| user2 | Helen | 0 |
Run Code Online (Sandbox Code Playgroud)
只需使用LEFT JOIN表名称的交换,
SELECT UserLogin, Name, count(Writer)
FROM Members
LEFT JOIN Article on Writer = UserLogin
GROUP BY UserLogin, Name
Run Code Online (Sandbox Code Playgroud)
要进一步了解联接,请访问以下链接:
在您的问题中,您说"外键是"名称"指向"Writer",是不是writer is pointing to UserLogin哪个表Article依赖于表Members?
| 归档时间: |
|
| 查看次数: |
20265 次 |
| 最近记录: |