Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个表内部联接的Mysql计数,平均联接_Mysql_Join_Count - Fatal编程技术网

两个表内部联接的Mysql计数,平均联接

两个表内部联接的Mysql计数,平均联接,mysql,join,count,Mysql,Join,Count,我渴望连接两个表,但似乎无法正确连接,结构如下所示 表1(成员) [用户登录名|名称] 表2(文章) [艺术|作者|内容] Article.writer指向Members.UserLogin 我想用尽可能少的代码显示注册用户登录的整个列表,同时还要统计他们可能写了多少篇文章,或者如果他们没有写任何文章,他们也应该在列表上 我想要的是: [UserLogin | Name | articleswrited] 到目前为止,我得到的是: SELECT UserLogin, Name, Writer,

我渴望连接两个表,但似乎无法正确连接,结构如下所示

表1(成员) [用户登录名|名称]

表2(文章) [艺术|作者|内容] Article.writer指向Members.UserLogin

我想用尽可能少的代码显示注册用户登录的整个列表,同时还要统计他们可能写了多少篇文章,或者如果他们没有写任何文章,他们也应该在列表上

我想要的是: [UserLogin | Name | articleswrited]

到目前为止,我得到的是:

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”的“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;