0

我有一个包含客户、项目和订单的数据库。这是一个考试项目,因此可能不是最适合现实生活的项目。我有这个问题。我想要一份我们所有客户所购买商品的清单以及总价,但我什么也做不了。

select Kunder.navn,Ordre.*, Indeholder.antal, Varer.*
from Kunder
join Ordre on Kunder.kunde_nr=Ordre.kunde_nr
join Indeholder on Ordre.ordre_nr=Indeholder.ordre_nr
join Varer on Varer.vare_nr=Indeholder.vare_nr
where er_industri=0
order by bestillingsdato

我已经尝试了很多:

sum (Indeholder.antal * Varer.privat_pris) as total
group by Ordre.ordre_nr

但我无法得到任何我尝试过的东西,给我我正在寻找的东西。

我希望你想帮助我,并且你明白我的意思(我不是以英语为母语的人)。

我已经上传了我们映射的图像,所以你可以看到我们的数据库是什么样的:

为了清楚起见,只是一个翻译:

Kunder = customers
Varer = items
Ordre = orders
Indeholder = includes
4

1 回答 1

0

只需在您的 group by 子句中添加更多列。除了聚合函数 [SUM(), COUNT(), AGV()] 之外,group by 子句和 select 子句中必须存在相同的列列表:

所以,一般来说:

  select <col1, col2, col3...>, SUM(...)
  from ...
  group by <col1, col2, col3...>

如果您想要每个客户和订单分组:

  select Kunder.navn, Ordre.ordre_nr, sum (Indeholder.antal * Varer.privat_pris) as total
  from Kunder
  join Ordre on Kunder.kunde_nr=Ordre.kunde_nr
  join Indeholder on Ordre.ordre_nr=Indeholder.ordre_nr
  join Varer on Varer.vare_nr=Indeholder.vare_nr
  where er_industri=0
  group by Kunder.navn, Ordre.ordre_nr

您还可以对每个客户进行分组:

   select Kunder.navn, sum (Indeholder.antal * Varer.privat_pris) as total
   from Kunder
   join Ordre on Kunder.kunde_nr=Ordre.kunde_nr
   join Indeholder on Ordre.ordre_nr=Indeholder.ordre_nr
   join Varer on Varer.vare_nr=Indeholder.vare_nr
   where er_industri=0
   group by Kunder.navn
于 2013-05-30T13:06:51.073 回答