我有一张桌子" Bed"和表"组件"。在这两者之间我有一个m:n关系和表" BedComponent",其中我存储了Bed-ID和Component-ID。 每个组件都有价格。现在我想写一个选择语句,它给出了某个床的价格总和。
这就是我所拥有的:
SELECT Bed.idBed, Bed.name, SUM(src.price) AS summe, Bed.idCustomer
FROM Bed,
(SELECT price
FROM dbo.Component AS C
WHERE (C.idComponent IN
(SELECT idComponent
FROM dbo.BedComponent AS BC
WHERE 1 = BC.idBed))) AS src
GROUP BY dbo.Bed.idBed, dbo.Bed.name, dbo.Bed.idCustomer;
此声明有效。但是我当然不想把硬编码的床身ID写入我的选择,因为它总是计算床1的价格。而不是" 1"我想拥有当前的床名。
我使用MS SQL Server
感谢您的帮助。
答案 0 :(得分:0)
我想你想要:
select b.idBed, b.name, SUM(src.price) AS summe, b.idCustomer
from bed b join
bedcomponent bc
on b.idBed = bc.idBed join
component c
on c.idComponent = bc.idComponent
group by b.idBed, b.name, b.idCustomer;
我idCustomer
和select
对group by
看起来很奇怪,但我不知道你想要达到的目标。
还要注意表别名的使用,这使得查询更容易编写和阅读。