Hi there.
I need your appreciated help.
I have this records in the mysql table `listfiles_2011_11_25`:
This is the output with this query:Code:CODE_A myDate max_STATUS max_date INC_H2 INC_CH4 INC_C2H6 INC_C2H4 INC_C2H2 INC_CO INC_CO2 5550 2005-10-27 ALERT 2009-07-28 -0.022 0.067 0.044 0.089 0.022 0.422 11.267 5550 2003-10-07 OK 2005-10-27 -3.500 -5.917 -4.500 -4.625 0.125 -5.542 -60.250
I have to compare values `inc_H2, inc_CH4, inc_C2H6, inc_C2H4, inc_C2H2, inc_CO, inc_CO2` with this values:Code:SELECT t.CODE_A , t.myDate , m.max_STATUS , m.max_date , m.max_H2_PPM , t.H2_PPM , FORMAT((max_H2_PPM-t.H2_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) inc_H2 , m.max_CH4_PPM , t.CH4_PPM , FORMAT((max_CH4_PPM-t.CH4_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) inc_CH4 , m.max_C2H6_PPM , t.C2H6_PPM , FORMAT((max_C2H6_PPM-t.C2H6_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) inc_C2H6 , m.max_C2H4_PPM , t.C2H4_PPM , FORMAT((max_C2H4_PPM-t.C2H4_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) inc_C2H4 , m.max_C2H2_PPM , t.C2H2_PPM , FORMAT((max_C2H2_PPM-t.C2H2_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) inc_C2H2 , m.max_CO_PPM , t.CO_PPM , FORMAT((max_CO_PPM-t.CO_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) inc_CO , m.max_CO2_PPM , t.CO2_PPM , FORMAT((max_CO2_PPM-t.CO2_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) inc_CO2 FROM ( SELECT CODE_A , MAX(myDate) max_date , MAX(STATUS) max_STATUS , MAX(H2_PPM) max_H2_PPM , MAX(CH4_PPM) max_CH4_PPM , MAX(C2H6_PPM) max_C2H6_PPM , MAX(C2H4_PPM) max_C2H4_PPM , MAX(C2H2_PPM) max_C2H2_PPM , MAX(CO_PPM) max_CO_PPM , MAX(CO2_PPM) max_CO2_PPM FROM listfiles_2011_11_25 GROUP BY CODE_A, myDate) m INNER JOIN listfiles_2011_11_25 t ON m.CODE_A = t.CODE_A AND (m.max_date > t.myDate) AND t.CODE_A = '5550' GROUP BY t.CODE_A, myDate ORDER BY t.ID DESC;
If only one value is out of range I need update the `field' STATUS of the mysql table `listfiles_2011_11_25` with `ALERT` else it's `OK`.Code:inc_H2 inc_CH4 inc_C2H6 inc_C2H4 inc_C2H2 inc_CO inc_CO2 11 10 8 13 4 90 850
I try this query, but even nothing value is out of range the `field' STATUS not change from `ALERT` to `ok` in the first record.
What wrong?
Can you help me?
Code:UPDATE listfiles_2011_11_25 t INNER JOIN ( SELECT CODE_A , MAX(STATUS) max_STATUS , MAX(myDate) max_date , MAX(H2_PPM) max_H2_PPM , MAX(CH4_PPM) max_CH4_PPM , MAX(C2H6_PPM) max_C2H6_PPM , MAX(C2H4_PPM) max_C2H4_PPM , MAX(C2H2_PPM) max_C2H2_PPM , MAX(CO_PPM) max_CO_PPM , MAX(CO2_PPM) max_CO2_PPM FROM listfiles_2011_11_25 GROUP BY CODE_A, myDate) m ON m.CODE_A = t.CODE_A AND (m.max_date > t.myDate) AND (t.CODE_A <>'' AND t.CODE_A <> '0') SET , t.STATUS = IF( FORMAT((max_H2_PPM-t.H2_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) > 11 OR FORMAT((max_CH4_PPM-t.CH4_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) > 10 OR FORMAT((max_C2H6_PPM-t.C2H6_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) > 8 OR FORMAT((max_C2H4_PPM-t.C2H4_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) > 13 OR FORMAT((max_C2H2_PPM-t.C2H2_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) > 4 OR FORMAT((max_CO_PPM-t.CO_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) > 90 OR FORMAT((max_CO2_PPM-t.CO2_PPM)/PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM m.max_date) , EXTRACT(YEAR_MONTH FROM t.myDate)),3) > 850 , 'ALERT', 'ok') WHERE t.CODE_A like '%5550%';



Reply With Quote






Bookmarks