Icon View Incident Report

Minor Minor
Reported By: Thad Smith
Reported On: 4/13/2004
For: Version 4.05 Build 1
# 1666 Using Complex Expressions with IF Function THEN or ELSE Clauses Does Not Work

When I add an IF to the WHERE Clause I receive Error 11949 - ELSE keyword or comma expected after second IF function argument, instead found '=' in WHERE or JOIN clause. DBISAM ver 3.21

SELECT
 M.IndvID,
 M.Group_ID,
 M.Reserve_ID,
 M.Mark_Year,
 M.Event_ID,
 IF (G.Master_ID = 0 THEN
   EXTRACT(MONTH FROM MA2.Group_Start)
 ELSE
   EXTRACT(MONTH FROM MA.Group_Start)
 ) AS Start_Month
FROM awgrmark M
JOIN awgrgrp G ON (M.Group_ID = G.Group_ID)
LEFT OUTER JOIN awgrgrma MA ON (G.Master_ID = MA.Group_ID)
LEFT OUTER JOIN awgrgrma MA2 ON (G.Group_ID = MA2.Group_ID)
WHERE
   IF(G.Master_ID=0 THEN M.Group_ID = 4 ELSE G.Master_ID = 4)

Workaround:

SELECT
 M.IndvID,
 M.Group_ID,
 M.Reserve_ID,
 M.Mark_Year,
 M.Event_ID,
 IF (G.Master_ID = 0 THEN
   EXTRACT(MONTH FROM MA2.Group_Start)
 ELSE
   EXTRACT(MONTH FROM MA.Group_Start)
 ) AS Start_Month
FROM awgrmark M
JOIN awgrgrp G ON (M.Group_ID = G.Group_ID)
LEFT OUTER JOIN awgrgrma MA ON (G.Master_ID = MA.Group_ID)
LEFT OUTER JOIN awgrgrma MA2 ON (G.Group_ID = MA2.Group_ID)
WHERE
   IF(G.Master_ID=0 THEN M.Group_ID ELSE G.Master_ID )=4



Comments Comments and Workarounds
Thanks to Helmut Schiefer for the above workaround.


Resolution Resolution
Fixed Problem on 4/13/2004 in version 4.06 build 1
Image