There is some error in the below nested case statement I am using. Whenever I try to exceute this it's giving these errors:-
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHEN (ISNUMERIC(FORMULA_RESULT) = 1 AND LTRIM(UPPER(MAX_SPEC)) = 'PASS' AND LTRI' at line 461064
Fatal error: Call to a member function num_rows() on a non-object in C:Inetpubwwwdevssvacisystemappslabmodelsm_tests.php on line 396
Code:-
$result = $this->db->query(
"SELECT * FROM (SELECT `lt`.*, ltm.METHOD_NAME, `lt`.`DATE_INSERTED` AS TEST_DATE, `lt`.`PRODUCT_ID` AS ACTUAL_PRODUCT_ID, `lc`.*, `lp`.`PRODUCT_MAS_ID` AS PRODUCT_NAME, `lp`.`PRODUCT_DESCRIPTION`, `ll`.*, `ld`.DEPARTMENT, `ltl`.`TEST`, ltl.CALCULATOR, `lmu`.`MEASUREMENT`,
CASE (@result:=TRIM(UPPER(FORMULA_RESULT)))
WHEN 'PASS'
THEN IF(QA_MIN_SPEC = FORMULA_RESULT AND QA_MAX_SPEC = FORMULA_RESULT,NULL,'WILL BE OOS')
WHEN 'FAIL'
THEN IF(QA_MIN_SPEC = FORMULA_RESULT AND QA_MAX_SPEC = FORMULA_RESULT,NULL,'WILL BE OOS')
WHEN 'ABSENT'
THEN NULL
WHEN 'PRESENT'
THEN 'WILL BE OOS'
WHEN 'TNTC'
THEN 'WILL BE OOS'
/*CHG0032114 -INC0051173 ->Alphabetic validation added for OOS Cases */
WHEN LTRIM(UPPER(FORMULA_RESULT)) LIKE '[a-Z][a-Z]%' AND LTRIM(UPPER(FORMULA_RESULT)) Not IN('PASS','ABSENT','ND')
THEN 'WILL BE OOS'
/*CHG0032114 -INC0051173 ->Alphabetic validation added for OOS Cases */
WHEN 'ND'
THEN IF(0 >= QA_MIN_SPEC AND 0 <= QA_MAX_SPEC, NULL, 'WILL BE OOS')
ELSE
CASE WHEN @result LIKE '<%'
THEN
IF((REPLACE(FORMULA_RESULT,'<','') - 1) BETWEEN CAST(QA_MIN_SPEC AS DECIMAL(30,15)) AND CAST(QA_MAX_SPEC AS DECIMAL),NULL,'WILL BE OOS')
ELSE
CASE
WHEN (Category_ID=2) THEN
CASE WHEN (CAST(formula_result AS DECIMAL(30,15)) NOT BETWEEN CAST(QA_MIN_SPEC AS DECIMAL(30,15)) AND CAST(QA_MAX_SPEC AS DECIMAL(30,15)))
THEN 'WILL BE OOS'
ELSE
CASE WHEN (CAST(formula_result AS DECIMAL(30,15)) NOT BETWEEN CAST(ALERT_LIMIT_MIN AS DECIMAL(30,15)) AND CAST(ALERT_LIMIT_MAX AS DECIMAL(30,15)))
THEN 'WILL BE OOA'
END
END
ELSE
CASE WHEN (CAST(formula_result AS DECIMAL(30,15)) NOT BETWEEN CAST(MIN_SPEC AS DECIMAL(30,15)) AND CAST(MAX_SPEC AS DECIMAL(30,15)))
THEN 'WILL BE OOS'
ELSE
CASE WHEN (CAST(formula_result AS DECIMAL(30,15)) NOT BETWEEN CAST(ALERT_LIMIT_MIN AS DECIMAL(30,15)) AND CAST(ALERT_LIMIT_MAX AS DECIMAL(30,15)))
THEN 'WILL BE OOA'
END
END
END
WHEN (ISNUMERIC(FORMULA_RESULT) = 1 AND LTRIM(UPPER(MAX_SPEC)) = 'PASS' AND LTRIM(UPPER(MIN_SPEC)) = 'PASS')
THEN 'WILL BE OOS'
WHEN ISNUMERIC(FORMULA_RESULT) = 1 and LTRIM(UPPER(MAX_SPEC)) = 'ABSENT' and LTRIM(UPPER(MIN_SPEC)) = 'ABSENT'
THEN 'WILL BE OOS'
WHEN SUBSTRING(FORMULA_RESULT,1,1) = '<' and ISNUMERIC(SUBSTRING(FORMULA_RESULT,2,3)) = 1 and LTRIM(UPPER(MAX_SPEC)) = 'PASS' and LTRIM(UPPER(MIN_SPEC)) = 'PASS'
THEN 'WILL BE OOS'
WHEN SUBSTRING(FORMULA_RESULT,1,1) = '<' and ISNUMERIC(SUBSTRING(FORMULA_RESULT,2,3)) = 1 and LTRIM(UPPER(MAX_SPEC)) = 'ABSENT' and LTRIM(UPPER(MIN_SPEC)) = 'ABSENT'
THEN 'WILL BE OOS'
END
END AS will_be_oos,
$where".$order.") q".$whereFilters
);
