使用另一个表中的Count()值对sql结果进行排序

使用另一个表中的Count()值对sql结果进行排序,sql,sql-order-by,Sql,Sql Order By,假设我们有这样一个用户表: ID | USERNAME | STATUS | 01 | Aname | 1 | 02 | Bname | 1 | 03 | Cname | 2 | 04 | Dname | 1 | ID | USER | VIDEO | 01 | 01 | aaaa | 02 | 01 | bbbb

假设我们有这样一个用户表:

ID  |  USERNAME  |  STATUS  |
01  |  Aname     |    1     |
02  |  Bname     |    1     |
03  |  Cname     |    2     |
04  |  Dname     |    1     |
ID  |  USER      |  VIDEO   |
01  |  01        |   aaaa   |
02  |  01        |   bbbb   |
03  |  02        |   cccc   |
04  |  02        |   dddd   |
05  |  03        |   eeee   |
06  |  03        |   ffff   |
07  |  03        |   gggg   |
还有另外两个表,其中,对于每个用户,记录用户“拥有”的距离、视频和照片的项目,假设视频表如下所示:

ID  |  USERNAME  |  STATUS  |
01  |  Aname     |    1     |
02  |  Bname     |    1     |
03  |  Cname     |    2     |
04  |  Dname     |    1     |
ID  |  USER      |  VIDEO   |
01  |  01        |   aaaa   |
02  |  01        |   bbbb   |
03  |  02        |   cccc   |
04  |  02        |   dddd   |
05  |  03        |   eeee   |
06  |  03        |   ffff   |
07  |  03        |   gggg   |
照片也一样:

ID  |  USER      |  PHOTO   |
01  |  01        |   aaaa   |
02  |  02        |   cccc   |
03  |  02        |   dddd   |
04  |  03        |   eeee   |
05  |  03        |   ffff   |
06  |  03        |   gggg   |
现在,我正试图在
STATUS
字段中对第一个表的结果进行排序,因此状态为2的用户将在结果的末尾(或开头),但我想根据他们有或没有视频或照片的事实对其他用户进行排序。实际上,对于状态为1的所有用户,我检查他们是否有视频和照片,并显示类似“警告,您没有视频”之类的消息,我还想根据状态以及他们是否有照片或视频来订购所有用户。。。比如:

SELECT id,username,status,NumOfPhotos,NumOfVideos order by status ASC, numOfPhotos ASC, NumOfVideos DESC
其中
numofothops
,例如
从照片中选择COUNT(*),其中USER=USERS.ID


可能吗?这在一条语句中是可能的吗?

这是SQL Server上的一个示例,但类似的东西在其他RDBMS上应该可以很好地工作

SELECT 
id, username, status, COALESCE(NumOfPhotos,0) AS NumOfPhotos,COALESCE(NumOfVideos,0) AS NumOfVideos 
FROM dbo.Users u 
LEFT JOIN (SELECT [USER], COUNT(*) AS NumOfPhotos FROM dbo.Photos GROUP BY [USER]) ph ON ph.[USER] = u.ID
LEFT JOIN (SELECT [USER], COUNT(*) AS NumOfVideos FROM dbo.Videos GROUP BY [USER]) vd ON vd.[USER] = u.ID
ORDER BY status ASC, numOfPhotos ASC, NumOfVideos DESC