Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Sql 简单数据库查询_Sql - Fatal编程技术网

Sql 简单数据库查询

Sql 简单数据库查询,sql,Sql,我有两个表,用户和类。我需要用用户ID显示每个用户的类数,我还必须显示这些用户。。没有课。怎么做 我认为子选择可能是实现这一点最简单的方法 SELECT Users.id, Users.username, COUNT(*) AS classes FROM Users LEFT OUTER JOIN Classes ON User.fk_class_id = Classes.id GROUP BY Users.id, Users.username SELECT U.id,

我有两个表,用户和类。我需要用用户ID显示每个用户的类数,我还必须显示这些用户。。没有课。怎么做

我认为子选择可能是实现这一点最简单的方法

SELECT Users.id, Users.username, COUNT(*) AS classes 
  FROM Users 
LEFT OUTER JOIN Classes ON User.fk_class_id = Classes.id 
       GROUP BY Users.id, Users.username
SELECT U.id, numClasses = (SELECT COUNT(1) FROM classes WHERE userID = U.id)
  FROM Users U

按class.id分组在大多数数据库上都会返回错误,因为users.username不在没有聚合函数的组中。这相当于Dex答案中的左JOIN,尽管Dex的效率更高,这取决于优化器您是对的,我没有遵循左外连接返回多行计数的逻辑,这是我的新手错误。出于某种原因,我认为它会为每个类返回用户,但它不会。
select a.user_name, a.user_id, count(b.class_name)
from user as a
left join class as b
on a.class_id = b.id