Si 我是 access 和 SQL 新手。 我有我的小数据库(商店系统) 我正在尝试进行一个非常简单的查询,在其中打印出用户的姓名以及他们花费的总和。
SELECT kl.name, kl.sname, Sum((SELECT onl_Sum FROM online_payment)) AS overall
FROM users AS kl, orders AS pas, payments AS maks
WHERE (((kl.Klnum)=[pas].[Klnum]) AND ((pas.Pasnum)=[maks].[Pasnum]) AND ((maks.paynum)=(SELECT paynum FROM online_payment)))
GROUP BY kl.name, kl.name;
为了更容易理解,我稍微更改了名称。
问题是,如果每个用户只有一笔付款,那么这是可行的,但是当用户有不止一笔付款时,就会出错。
关系是这样的: 用户 -> 订单 -> 付款 -> Online_ payment -> 未在线 用户可以有多个订单,但每个订单可以有一次或多次付款(问题)并且每次付款只能有一次在线支付/非在线支付
我认为我确实搞砸了这里的人际关系,但我不确定。
有更多的表和关系,但没有出现任何问题...
最佳答案
SELECT kl.name, kl.sname, Sum(online.onl_Sum) AS overall
FROM users AS kl JOIN orders AS pas ON pas.Klnum = kl.Klnum
JOIN payments AS maks ON pas.Pasnum=maks.Pasnum
LEFT JOIN online_payment online ON maks.paynum = online.paynum
GROUP BY kl.name, kl.name;
关于mysql - "At most one record must be returned by this subquery"我是否搞砸了人际关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29536655/