Mysql SQL中具有2关系的子查询1:n

Mysql SQL中具有2关系的子查询1:n,mysql,subquery,Mysql,Subquery,我是SQL新手,我有一个关系模型: 我将用*标记主键,用*标记外键- Client(id*,name) Site(id*,name,addrees,idClient-) Device(id*,serialnumeber,idSite-) 从这些表中,我希望新表如下所示: *client.name*,*numberofsites*,*numerberofdevices*(total, every site grouped together). 我试过这个,但不起作用: SELECT sq.

我是SQL新手,我有一个关系模型:

我将用*标记主键,用*标记外键-

Client(id*,name)

Site(id*,name,addrees,idClient-)

Device(id*,serialnumeber,idSite-)
从这些表中,我希望新表如下所示:

*client.name*,*numberofsites*,*numerberofdevices*(total, every site grouped together).
我试过这个,但不起作用:

SELECT sq.*, count(Devices.id) 
from (
       SELECT Clients.id,Clients.name,Clients.notes,count   (Sites.id),Sites.ids         
       FROM Clients 
          left join Sites on Clients.id=Sites.id Cliente 
       group by Clients.id) as sq 
left join Devices on Devices.idSites=sq.Sites.id 
group by sq.Sites.id
您可以尝试以下方法:

select c.Name ClientName,
       count(distinct s.id) NumberOfSites,
       count(distinct d.id) NumerberOfDevices
from Client c
join Site s on c.id = s.idClient
join Device d on s.id = d.idSite
group by c.Name

如果MySQL服务器只启用了\u FULL\u GROUP\u BYsql\u模式,则无法执行此操作。。问题是如果没有GROUPBY子句,就不能将非聚合列与聚合函数混合使用。。每个SQL标准数据库都会拒绝此查询。@RaymondNijland是的,我忘记了group by。编辑回答计数中的独特选项用于抵消由连接一对多关系(我假设)引起的乘法效应?@RaymondNijland是:客户端1-n站点,站点1-n设备,因此,反过来,客户端1-n设备I总是使用计数方法重写交付的表,以抵消乘法效应。。但我知道什么是。。。所以我意识到了它的目标。。我只相信DeliveredTables方法能够更好地扩展更多的记录,因为COUNTDISTINCT。。。看起来正在由“联接一对多乘法”产品导致的所有记录上运行。请正确格式化您的代码。帮助我们帮助您。我试过了,但没用。不工作怎么办???出错???空白结果???错误的结果???