如何从我的第三级子选择中的第一个select语句中访问所选列?

时间:2018-02-04 14:18:37

标签: sql sql-server

我有一张桌子" 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

感谢您的帮助。

1 个答案:

答案 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;

idCustomerselectgroup by看起来很奇怪,但我不知道你想要达到的目标。

还要注意表别名的使用,这使得查询更容易编写和阅读。