Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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
Php SQL查询计数问题_Php_Mysql_Sql - Fatal编程技术网

Php SQL查询计数问题

Php SQL查询计数问题,php,mysql,sql,Php,Mysql,Sql,我有两个表artist和members。艺术家与会员之间有零对多的关系。(一个艺术家可能有0个或多个成员) 所以,我想得到艺术家的所有领域,以及他的会员总数 我编写了一个查询,但如果表中没有艺术家(艺术家表为空),它将返回0count。我正在使用这个查询 SELECT a.artistname, count(m.id) as total FROM artist a, members m WHERE m.artist_id = a.id 如果没有艺术家,它不应该返回任何东西

我有两个表
artist
members
。艺术家与会员之间有零对多的关系。(一个艺术家可能有0个或多个成员)

所以,我想得到艺术家的所有领域,以及他的会员总数

我编写了一个查询,但如果表中没有艺术家(艺术家表为空),它将返回
0
count。我正在使用这个查询

SELECT a.artistname, count(m.id) as total 
    FROM artist a, members m 
    WHERE m.artist_id = a.id
如果没有艺术家,它不应该返回任何东西

谢谢大家!


我假设您的字段名是
艺术家
表中的
艺术家名

查询应如下所示:

SELECT artist.artistname, COUNT(members.id) AS total_members
FROM artist
LEFT JOIN members ON members.artis_id = artist.id
GROUP BY artist.artistname
使用join,要使用sql
count
您需要使用
分组依据

这应该可以:

   SELECT a.artistname, 
          count(m.id)
     FROM artist a
LEFT JOIN members m 
       ON m.artist_id = a.id;

也许艺人的名字是空的。你查过数据了吗?您可以尝试以下修改的查询:

SELECT a.artistname, count(m.id) as total 
FROM artist a, members m 
WHERE m.artist_id = a.id
AND   a.artistname is NOT NULL
AND   a.artistname <> '';
选择a.artistname,计数(m.id)作为总数
来自艺术家a,成员m
其中m.artist_id=a.id
a.artistname不为空
和a.艺人名称“;

这是查询的正确SQL结果。它没有什么问题,因为您使用的是
COUNT()
函数。我想获取artistname和成员数。所以,如果没有艺术家,这意味着,不应该有任何成员与该艺术家和记录的数量应该是0。但是,这里显示的是1条记录。没有艺术家。所以,artistname为NULL,count也显示了不应该存在的内容。这就是它将显示的内容,为什么不使用php来更改要显示的内容,即如果0 echo为NULL;使用脚本处理查询不是最佳做法。我相信应该有一个解决方案来克服这个问题。如果你想
艺术家姓名
会员人数
,你应该使用
分组方式
。我在您的查询中没有看到任何
group by
子句。