2015-09-14 56 views
0

Hi和抱歉,如果我沒有做這個問題的正確方法當其他列的其他結果相同時,如何在sql中求和結果?

我有這個疑問:

SELECT 
t4.tar_nombre as nombre_tarea, 
t2.rdi_fechacti as fecha_actividad, 
t3.rea_hrstarea as horas_trabajadas 

FROM 
    act_usuario t1 
INNER JOIN 
    act_regisdiario t2 
ON 
    (t2.usu_id = t1.usu_id) 
INNER JOIN 
    act_registtarea t3 
ON 
    (t3.rdi_id = t2.rdi_id) 
INNER JOIN 
    act_tarea t4 
ON 
    (t4.tar_id = t3.tar_id) 
WHERE 
    t4.usu_id = 4 
GROUP BY 

    t3.rea_id 

ORDER BY 
    t2.rdi_fechacti 

和查詢打印:

enter image description here

所以,我需要在「fecha_Actividad」存在相同的「nombre_actividad」時,那隻會顯示一個「fecha_actividad」和「horas_trabajadas」的總和。

例如查詢顯示此:

enter image description here

但我需要這個(因爲同樣的 「nombre_tarea」 是同一日期):

enter image description here

參考:

enter image description here

對不起,我的英語。

回答

1

分組後,您可以簡單地使用SUM(field)語法。

SELECT 
    t4.tar_nombre as nombre_tarea, 
    t2.rdi_fechacti as fecha_actividad, 
    t3.rea_hrstarea as horas_trabajadas, 
    SUM(t3.rea_hrstarea) 
FROM 
    act_usuario t1 
INNER JOIN 
    act_regisdiario t2 
ON 
    (t2.usu_id = t1.usu_id) 
INNER JOIN 
    act_registtarea t3 
ON 
(t3.rdi_id = t2.rdi_id) 
INNER JOIN 
    act_tarea t4 
ON 
    (t4.tar_id = t3.tar_id) 
WHERE 
    t4.usu_id = 4 
GROUP BY 
    t4.tar_nombre 
ORDER BY 
    t2.rdi_fechacti 

您還可以在分組結果上使用其他功能。你可以找到它們here

+0

嗨和thx,但是那個查詢給我顯示了與「horas_trabajadas」相同的列,例如我在「nombre_tarea」中需要的是「prueba de tarea」兩次,而我只需要看到一個「prueba de tarea」。並且總和5 + 3 = 8,因爲「nombre_tarea」在「fecha_actividad」中是兩次 – Jeanbf

+0

@Jeanbf從'GROUP BY'中刪除't3.rea_id',它將總結這一點。 –

+1

哈哈哈! ,現在工作!謝謝 :) – Jeanbf