两个表内部联接的Mysql计数,平均联接
我渴望连接两个表,但似乎无法正确连接,结构如下所示 表1(成员) [用户登录名|名称] 表2(文章) [艺术|作者|内容] Article.writer指向Members.UserLogin 我想用尽可能少的代码显示注册用户登录的整个列表,同时还要统计他们可能写了多少篇文章,或者如果他们没有写任何文章,他们也应该在列表上 我想要的是: [UserLogin | Name | articleswrited] 到目前为止,我得到的是:两个表内部联接的Mysql计数,平均联接,mysql,join,count,Mysql,Join,Count,我渴望连接两个表,但似乎无法正确连接,结构如下所示 表1(成员) [用户登录名|名称] 表2(文章) [艺术|作者|内容] Article.writer指向Members.UserLogin 我想用尽可能少的代码显示注册用户登录的整个列表,同时还要统计他们可能写了多少篇文章,或者如果他们没有写任何文章,他们也应该在列表上 我想要的是: [UserLogin | Name | articleswrited] 到目前为止,我得到的是: SELECT UserLogin, Name, Writer,
SELECT UserLogin, Name, Writer, count(*)
FROM Article
INNER JOIN Members on Writer=UserLogin
GROUP BY UserLogin;
或
它们都列出了mysql中的所有内容,但没有一个包含从未写过任何文章的用户登录名和姓名。你们能给我指一下正确的方向吗。我理解我的问题,但我不知道如何解决它
我在这个论坛上发现了类似的问题,但我没有从中找到任何解决方案。可能是语言障碍,也可能只是缺乏基本的mysql知识 只需使用
左连接
交换表名
SELECT UserLogin, Name, count(Writer)
FROM Members
LEFT JOIN Article on Writer = UserLogin
GROUP BY UserLogin, Name
要进一步了解加入的更多信息,请访问以下链接:
Writer指向UserLogin
,其中表文章
依赖于表成员?您可以使用子查询
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 |
这里是试试这个
SELECT m.UserLogin,m.Name,COUNT(a.ArtID) FROM Members m LEFT JOIN Article a ON a.Writer=m.Name GROUP BY m.Name;
Writer=m.Name
此处m.UserLogin
将come@DevalShahOP的确切单词…外键是指向“作者”的“名称”…这是我的错…从一开始。“外键是指向“作者”的“名称”
--它不是文章吗。writer
指向成员。UserLogin
在其中,表文章
依赖于表成员
?是的,这就是我的意思,将进行编辑。对不起…我真的很喜欢你的答案,简洁,你给了我一些很好的阅读。就像一个符咒,很好你理解了我的意图,虽然信息中有错误。。。非常感谢!希望更多的人在进行文章/成员查询时能从中学习。
SELECT
m.UserLogin,
m.Name,
(SELECT
COUNT(a.ArtID)
FROM Article a
WHERE a.Writer = m.UserLogin) AS ArticlesWritten
FROM Members m
SELECT m.UserLogin,m.Name,COUNT(a.ArtID) FROM Members m LEFT JOIN Article a ON a.Writer=m.Name GROUP BY m.Name;