2014-02-14 2 views
0

Я делаю запрос и прекрасно показать все, что я хочу:Сумма mutiplies результат в моем запросе

SELECT prog.cod_go, prog.data, prog.item, prog.tempoexposicao 
FROM tb_programacao prog 
JOIN tb_go go ON go.cod_go = prog.cod_go where go.cod_go = '1' 
AND go.equi_func1_mat = '0735' 
AND prog.data = '2014-01-24' 
GROUP BY prog.data,prog.item 

result: 
cod_go | data  | item | tempoexposicao 
1  |2014-01-24 | 10 | 00:00:30 
1  |2014-01-24 | 11 | 00:00:30 
1  |2014-01-24 | 12 | 00:00:30 
1  |2014-01-24 | 13 | 00:00:30 
1  |2014-01-24 | 14 | 00:00:30 
1  |2014-01-24 | 8 | 00:00:30 
1  |2014-01-24 | 9 | 00:00:30 

и после этого я попробовал сумму всего этого поля «tempoexposicao», как этот

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(temp.soma))) AS soma_tudo, temp.cod_go, temp.data, temp.item 
FROM (SELECT SUM(prog.tempoexposicao) AS 'soma', prog.cod_go, prog.data, prog.item 
FROM tb_programacao prog 
JOIN tb_go go ON go.cod_go = prog.cod_go where go.cod_go = '1' 
AND go.equi_func1_mat = '0735' 
AND prog.data = '2014-01-24' 
GROUP BY prog.data,prog.item) AS temp 

result: 
soma_tudo | cod_go | data  | item 
00:42:00 | 1  |2014-01-24 | 10 

Я ожидаю 00:03:30 не 00:42:00, я не могу сделать этот подзапрос?

+0

типа поля Время –

+0

Почему вы используете 'SUM' на производную таблице? – Anthony

+0

Я хочу суммировать все время после их выбора –

ответ

0

Это ваш базовый запрос:

SELECT prog.cod_go, prog.data, prog.item, prog.tempoexposicao 
FROM tb_programacao prog JOIN 
    tb_go go 
    ON go.cod_go = prog.cod_go 
where go.cod_go = '1' AND 
    go.equi_func1_mat = '0735' AND 
    prog.data = '2014-01-24' 
GROUP BY prog.data, prog.item; 

У вас есть две колонки в select, которые не в group by: prog.item и prog.tempoexposicao. Значения для этих столбцов исходят из произвольных совпадающих строк.

Эта версия должна давать согласующиеся результаты:

SELECT prog.cod_go, prog.data, min(prog.item) as item, min(prog.tempoexposicao) as tempoexposicao 
FROM tb_programacao prog JOIN 
    tb_go go 
    ON go.cod_go = prog.cod_go 
where go.cod_go = '1' AND 
    go.equi_func1_mat = '0735' AND 
    prog.data = '2014-01-24' 
GROUP BY prog.data, prog.item; 
+0

хорошо работает, но все тот же результат. Я хочу, чтобы SUM все tempoexposicao как один –

+0

Тогда не делайте 'group by' в подзапросе. –

0
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(temp.tempoexposicao))) AS soma_tudo, 
temp.cod_go, 
temp.data, 
temp.item 
FROM(
SELECT 
prog.cod_go, 
prog.data, 
prog.item, 
prog.tempoexposicao 
FROM tb_programacao prog 
JOIN tb_go go ON go.cod_go = prog.cod_go 
where go.cod_go = '1' 
and go.equi_func1_mat = '0735' 
AND prog.data = '2014-01-24' 
group by prog.data,prog.item) AS temp 

который работал ТНХ все!

0

, который работает я стыки в подзапросе, то я подвести everythin в динамичной таблице Спасибо всем

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(temp.tempoexposicao))) AS soma_tudo, 
temp.cod_go, 
temp.data, 
temp.item 
FROM(
SELECT 
prog.cod_go, 
prog.data, 
prog.item, 
prog.tempoexposicao 
FROM tb_programacao prog 
JOIN tb_go go ON go.cod_go = prog.cod_go 
where go.cod_go = '1' 
and go.equi_func1_mat = '0735' 
AND prog.data = '2014-01-24' 
group by prog.data,prog.item) AS temp 
Смежные вопросы