我有两张这样的表:
'BUDGET TABLE'
idBudget BudgetDescription CreateDate idProject
1 NameBudget1 09/09/2015 2
2 NameBudget2 08/07/2015 1
3 NameBudget3 08/09/2015 1
'ITEMS'每个预算中的项目
idItem ItemDescription Price IdBudget
1 Item1 10 1
2 Item2 30 1
3 Item3 5 2
4 Item4 130 3
5 Item5 27 3
如果USER希望看到属于Project ='1'的预算,我正试图获得这些结果
-----------------------------------------------
BudgetDescription CreateDate Sum(Price) as Total
----------------------------------------------
NameBudget2 08/07/2015 5
NameBudget3 08/09/2015 157
-----------------------------------------------
我试图加入这些查询:
Select idBudget, BudgetDescripcion, CreateDate
from budget
where idProject='1';
Select sum(price) as total
from Items i
where i.idBudget=idBudget;
像
Select sum(price) from item where idBudget=(select idBudget, BudgetDescription, createdate from Budget where idProject='1');
但那会给我一个错误:“操作数应包含1列”
所以我试着擦除其他列:
Select sum(price) from item where idBudget=(select idBudget from Budget where idProject='1');
和错误:子查询返回超过1行
非常感谢你的帮助。
答案 0 :(得分:1)
select
b.idBudget,
b.BudgetDescripcion,
b.CreateDate BudgetCreateDate,
COUNT(i.idItem) CountItems,
SUM(i.price) SumItemPrice
from
budget b
inner join Items i on i.IdBudget = b.idBudget
where
b.idProject = 1
group by
b.idBudget, b.BudgetDescripcion, b.CreateDate;
答案 1 :(得分:0)
LEFT JOIN就是您所寻求的。
选择b.idBudget,b.BudgetDescripcion,b.CreateDate,sum(i.price)为总数 来自预算b LEFT JOIN项目i ON i.idBudget = b.idBudget 其中b.idProject ='1';