Select Case problem...

Select Case problem...

am 08.07.2006 14:45:16 von scole954387

Hi,

I have a problem. I have written a SQL statement that has a nested
select case statement on the 'where' clause to condition the results.

--------------------------------------------------------
SELECT b.ISBN, b.Title, b.SmallImage, f.idForSale, count(f.idForSale)

FROM books b, forsale f

WHERE b.idBooks=f.Books_idBooks AND (select case when %s = 0 then
f.BookCondition_idConditions>0 ELSE f.BookCondition_idConditions=%s
end)

GROUP BY b.ISBN

--------------------------------------------------------

The statement works fine on my test server running Apache2, however
receives the following error on the production server running MySQL
4.0.25-standard-log.

Error:
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 'select
case when 1 = 0 then f.BookCondition_idConditions>0 ELSE

Same error received no matter what value %s gets (0,1,2, etc).

Anyone have any ideas why the statement doesn't work on my production
server? I've researched the mysql manual and select case appears to be
a valid function for this version of mysql.

Any help is appreciated

Thanks,
S. Cole

Re: Select Case problem...

am 08.07.2006 19:57:59 von zac.carey

scole954387@gmail.com wrote:
> Hi,
>
> I have a problem. I have written a SQL statement that has a nested
> select case statement on the 'where' clause to condition the results.
>
> --------------------------------------------------------
> SELECT b.ISBN, b.Title, b.SmallImage, f.idForSale, count(f.idForSale)
>
> FROM books b, forsale f
>
> WHERE b.idBooks=f.Books_idBooks AND (select case when %s = 0 then
> f.BookCondition_idConditions>0 ELSE f.BookCondition_idConditions=%s
> end)
>
> GROUP BY b.ISBN
>
> --------------------------------------------------------
>
> The statement works fine on my test server running Apache2, however
> receives the following error on the production server running MySQL
> 4.0.25-standard-log.
>
> Error:
> 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 'select
> case when 1 = 0 then f.BookCondition_idConditions>0 ELSE
>
> Same error received no matter what value %s gets (0,1,2, etc).
>
> Anyone have any ideas why the statement doesn't work on my production
> server? I've researched the mysql manual and select case appears to be
> a valid function for this version of mysql.
>
> Any help is appreciated
>
> Thanks,
> S. Cole

i don't think you can use subselects pre 4.1

Re: Select Case problem...

am 08.07.2006 20:34:22 von scole954387

Thanks for the reply.

I got it to work by removing the () and the SELECT before the case...
so the sql that worked was:

------------------------------------
SELECT b.ISBN, b.Title, b.SmallImage, f.idForSale, count(f.idForSale)

FROM books b, forsale f

WHERE b.idBooks=f.Books_idBooks AND CASE WHEN %s = 0 THEN
f.BookCondition_idConditions>0 ELSE f.BookCondition_idConditions=%s END

GROUP BY b.ISBN
------------------------------------

Hope this helps someone else trying to figure out the same.

S. Cole

zac.carey@gmail.com wrote:
> scole954387@gmail.com wrote:
> > Hi,
> >
> > I have a problem. I have written a SQL statement that has a nested
> > select case statement on the 'where' clause to condition the results.
> >
> > --------------------------------------------------------
> > SELECT b.ISBN, b.Title, b.SmallImage, f.idForSale, count(f.idForSale)
> >
> > FROM books b, forsale f
> >
> > WHERE b.idBooks=f.Books_idBooks AND (select case when %s = 0 then
> > f.BookCondition_idConditions>0 ELSE f.BookCondition_idConditions=%s
> > end)
> >
> > GROUP BY b.ISBN
> >
> > --------------------------------------------------------
> >
> > The statement works fine on my test server running Apache2, however
> > receives the following error on the production server running MySQL
> > 4.0.25-standard-log.
> >
> > Error:
> > 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 'select
> > case when 1 = 0 then f.BookCondition_idConditions>0 ELSE
> >
> > Same error received no matter what value %s gets (0,1,2, etc).
> >
> > Anyone have any ideas why the statement doesn't work on my production
> > server? I've researched the mysql manual and select case appears to be
> > a valid function for this version of mysql.
> >
> > Any help is appreciated
> >
> > Thanks,
> > S. Cole
>
> i don't think you can use subselects pre 4.1