根据另一个选择的值进行选择

时间:2015-09-14 17:26:00

标签: mysql

我有两张这样的表:

'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行

非常感谢你的帮助。

2 个答案:

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