2016-07-18 1 views
1

У меня есть таблица «кошки», которая содержит столбец бюджета, столбец идентификатора проекта и столбец идентификатора. Ребенок - это таблицы «часы», которые содержат cat_id и total_time.MySQL Выберите SUM из таблицы 1 и таблицу форм SUM 2, где они соединены

Мне нужно

, а также

SELECT SUM(clocks.total_time) WHERE cats.id = clocks.cat_id 

У меня возникают проблемы с возвратом правильных сумм в JOIN запросе, как это обычно дублирует значение SUM для таблицы кошек для каждого экземпляра записи часов, которая находится в JOIN.

Пример запроса я попытался

SELECT a SUM(table1.column1), JOIN table2 WHERE table1.id = table2.cat_id, and SELECT SUM(table2.column2) 

спасибо!

+1

Почему вы отметили mysql ** и ** sql-server? –

+0

@scsimon, мои извинения, он должен был пропустить щелчок в рекомендуемых тегах. Я попытаюсь удалить этот тег. –

+0

Не беспокойтесь. Это заметил @MarkRotteveel. Иногда «предлагаемые теги» могут вводить в заблуждение. – scsimon

ответ

1

кажется вам нужно внутреннее соединение

select sum(cats.budget)/count(clocks.*), SUM(clocks.total_time) 
from cats 
inner join clocks on cats.id = clocks.cat_id 
where cats.project_id =1; 
+0

Это была моя первоначальная попытка, но это возвращает SUM из SUM (cats.budget) для каждой найденной записи часов: значение, если найдены 4 записи часов, SUM (cats.budget) добавляется к себе 4 раза –

+0

У меня есть обновление ответ .. разделение на количество строк .. дайте мне знать .. – scaisEdge

0

Вы должны JOIN к уже агрегированныхclocks стол:

select t1.id, sum(t1.budget) as total_budget, t2.total_time 
from cats as t1 
inner join (
    select cat_id, SUM(total_time) as total_time 
    from clocks 
    group by cat_id) as t2 on t1.id = t2.cat_id 
where t1.project_id =1 
group by t1.id 

Производная таблица используется в запросе выше возвращает SUM из total_time за cat_id. Запрос работает в MySQL. Для SQL Server вам нужно добавить поле t2.total_time в предложение group by.

+0

спасибо! это меня очень близко, но я все еще вижу различия SUM в clocks.total_time. Я поменял «group by cat_id» как t2 на t1.id = t2.cat_id «вместо использования« group by proj_id ») на t1.proj_id = t2.proj_id», поскольку таблица часов также несет свой родительский идентификатор проекта, а также –

+0

@nocc_ninja Я думаю, вы должны сохранить группировку, как есть, а также фильтровать 'project_id = 1' в подзапросе. –

Смежные вопросы