2013-05-30 36 views
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 

但我只是不能得到任何东西,我试过,给我什么我要找的。

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

我上传了一张我们的mapping的图片,所以你可以看到我们的数据库是什么样子。

并且为了清楚,只是一个翻译:

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

谢谢。

回答

0

只需在group by子句中添加更多列。 除了集合函数[SUM(),COUNT(),AGV()]的列相同的列表必须是存在于基团通过子句 和在选择子句:

所以,一般为:

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

如果你想每一个客户和订单groupping:

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 

你也可以做一个每个客户groupping:

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 
+0

谢谢,这真的帮了我们大忙! :) –