2015-09-14 49 views
0

值我有喜歡這兩個表:選擇基礎上的另一種選擇

「預算表」

idBudget BudgetDescription CreateDate idProject 
    1  NameBudget1  09/09/2015  2 
    2  NameBudget2  08/07/2015  1 
    3  NameBudget3  08/09/2015  1 

「項目」,項目在每預算

idItem ItemDescription Price IdBudget 
    1  Item1    10  1 
    2  Item2    30  1 
    3  Item3    5  2 
    4  Item4    130 3 
    5  Item5    27  3 

我如果用戶想要查看屬於Project ='1'的預算,則試圖獲得這些結果。

----------------------------------------------- 
BudgetDescription CreateDate Sum(Price) as Total 
---------------------------------------------- 
    NameBudget2  08/07/2015  5 
    NameBudget3  08/09/2015  157 
----------------------------------------------- 

我想加入這些querys:

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'); 

and e rror:子查詢返回多於一行

非常感謝您的幫助。

+0

你是怎麼加入的? –

+0

Darius X.我編輯了我的作品 –

回答

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

作品完美!非常感謝^^^ Tomalak –

0

LEFT JOIN是你所追求的。

選擇b.idBudget,b.BudgetDescripcion,b.CreateDate,總和(i.price)爲總 從預算b LEFT JOIN資料I ON i.idBudget = b.idBudget 其中b.idProject ='1 「;

相關問題