2015-10-21 7 views
0

У меня есть три таблицы:Вычесть значение поля из счетчика (*) запроса

  1. Plans(PlanID(key), Capacity)
  2. CustomerInProject(VahedID, cinpid(key))
  3. Vahed(VahedID(key), PlanID,...)

Этот запрос показывает количество домов с тем же PlanID (карта), которую наняли люди:

select 
    count(*) 
from 
    Vahed as v2, 
    CustomerInProject 
where 
    CustomerInProject.VahedID = v2.VahedID 
group by PlanID 

Plans имеет поле int с именем Capacity. Я хочу вычесть Capacity из вышеуказанного запроса. Как я могу это сделать?

+3

[Избегайте использования старого стиля 'JOIN' синтаксис] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old- style-joins.aspx) –

+1

Можете ли вы разместить структуры таблиц для трех таблиц. Включите только соответствующие столбцы. –

ответ

2

Что-то вроде этого следует сделать это:

select p.PlanID, count(*) - p.Capacity 
from Vahed as v2 
join CustomerInProject c 
    on c.VahedID = v2.VahedID 
join Plan p 
    on p.PlanID = c.PlanID /* or v.PlanID, it's not clear from the question */ 
group by p.PlanID, p.Capacity 

На 6-й строке, вы можете заменить c.PlanID с v.PlanID - я не знаю точную схему таблицы.

+2

Typo, удалите «где». – jarlh

+0

@jarlh Хорошо заметили, спасибо! – GolfWolf

0
select sum(cnt) 
    from 
    (select capacity*-1 as cnt from 
    plans 
    union 
    select count(*) as cnt from Vahed as v2 
inner join 
     CustomerInProject on 
     CustomerInProject.VahedID = v2.VahedID 
     group by PlanID) 
Смежные вопросы