1
這個查詢讓人JOIN代替LEFT JOIN,但我不知道該怎麼辦呢 whitout使用cierre_mensual表何在條款:左加入成爲一個隱式加入我如何fixit?
SELECT last_odometro.equipo, IFNULL(SUM(cierre_mensual.recorrido),0) +
last_odometro.recorrido AS ultimo_odometro
FROM (
SELECT *
FROM `cierre_mensual`
WHERE mes < '2012-03-01'
AND `tipo_de_recorrido`
IN (1, 3)
GROUP BY `equipo`
HAVING MAX(mes)
) AS last_odometro
LEFT JOIN
`cierre_mensual` ON last_odometro.`equipo` = cierre_mensual.`equipo`
WHERE
cierre_mensual.mes > last_odometro.mes
AND cierre_mensual.mes < '2012-03-01'
GROUP BY `last_odometro`.`equipo`
表中的字段有: ID EQUIPO MES combustible_en_tanque recorrido tipo_de_recorrido
1)我想找到recorrido白衣最後MES(日期),其tipo_de_recorrido是(1,3) 2)如果存在
equipo mes combustible_en_tanque recorrido tipo_de_recorrido
7 2011-07-01 4 100 2
7 2011-07-01 4 100 2
7 2011-08-01 4 193900 1
7 2011-09-01 4 194000 1 <- the last row of type 1 194000
7 2011-10-01 4 100 2 +=100
7 2011-11-01 4 100 2 +=100
7 2011-12-01 4 100 2 +=100
7 2012-01-01 7 150 2 +=150
7 2012-02-01 4 50 2 +=50
求和recorrido其餘蒙山更大的MES 0
它的回報:
equipo ultimo_odometro
7 195150
但如果:
7 2011-07-01 4 100 2
7 2011-07-01 4 100 2
7 2011-08-01 4 193900 1
7 2011-09-01 4 194000 1 <- the last row of type 1 194000
no more rows whit type!=(1,2)
必須回到19.4,但加入失敗。
你也可以完成與上次(1,3)記錄的'UNION'和記錄的其餘部分作爲子查詢,然後求和所有的值。 – mellamokb 2012-07-13 20:34:20