* Russell Michell
> I was wondering if it's possible to perform an "elseif" in SQL Using MySQL
> 3.23.49-log running on Debian Linux?

It sure is. See below.

> My System:
> ----------
>
> * MySQL 3.23.49-log
> * Debian Linux
> * PHP 4.2.1
>
> The Logic:
> ----------
>
> IF condition1 - THEN query column1.
> ELSEIF condition2 - THEN query column2.
> ELSE condition3 query column2.
>
> The SQL: (more pseudo code than anything else)
> ----------------------------------------------
>
> SELECT a,b,c
> FROM companies
> WHERE
> IF(subscription AND no module , bitwise-data & column1
> ELSEIF no subscription AND no module , bitwise-data & column2 ,
> ELSE bitwise-data & column2)
> ORDER BY a";

It seems condition 2 and 3 are the same? typo? If they are the same,you
don't need ELSEIF, just a normal IF-ELSE: IF(subscription AND NOT
module,bitwise-data & column1,bitwise-data & column2).

> The "bitwise-data" is an integer bit from a URL Query String, it
> needs to be compared with one of two columns (column1 or column2)
> but which column is used depends upon whether a company has a
> subscription or not.

Making column d dependant on subscription and module:

SELECT a,b,c,
  IF(subscription AND NOT module, bitwise-data & column1,
     IF(NOT subscription AND NOT module, bitwise-data & column2,
        bitwise-data & column2)) AS d
  FROM companies
  WHERE <whatever>
  ORDER BY a

The IF() function is described here:

<URL: http://www.mysql.com/doc/en/Control_flow_functions.html#IDX1161 >

--
Roger


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to