You should BENCHMARK the two solutions and see which is faster. Or use
EXPLAIN to see if there is any difference.

---John Holmes...

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, October 01, 2002 3:24 PM
> To: [EMAIL PROTECTED]
> Cc: [EMAIL PROTECTED]
> Subject: RE: [PHP-DB] enum and bad planning
> 
> 
> Thanks for the responses.  I got one earlier that did the trick.  I
wanted
> to try as hard as i could from altering the table, as i was already
using
> the Y value in other reports...and here is a great solution.
> 
> this may help someone else. so I wanted to post it.  I'll use it
again,
> i'm
> sure
> 
> SELECT if( ENUM1 = 'y', 1, 0 ) + if( ENUM2 = 'Y', 1, 0 ) + if(ENUM3 =
'Y',
> 1, 0 ) + if(ENUM4 = 'Y', 1, 0 ) + if(ENUM5 = 'Y', 1, 0 ) AS NumHits,
> {other values to select}
> 
> HAVING NumHits > 1
> 
> Thanks again Rick.
> 
> 
> 
> 
> 
> 
>                     "John W. Holmes"
>                     <holmes072000@ch       To:
> <[EMAIL PROTECTED]>, <[EMAIL PROTECTED]>
>                     arter.net>             cc:
>                                            Subject:     RE: [PHP-DB]
enum
> and bad planning
>                     10/01/2002 03:19
>                     PM
>                     Please respond
>                     to holmes072000
> 
> 
> 
> 
> 
> 
> > I have five enum fields, all Y/N. There is now(last minute) a
> requirment
> > to
> > report on all clients that said Y to more then one of the
> questions(its a
> > survey).  Had i known about this requirement, i could have made them
> BIT
> > and had a simple 1/0 option and summed the fields to check the
> total....
> >
> > select * from table where sum(ENUM1, ENUM2,ENUM3, ENUM4, ENUM5) > 1;
> //or
> > something like that...
> >
> > anyone have an idea of how i could accomplish the same with Y/N or
> should
> > i
> > modify the tables and change them to 1/0's  which is a doable
option.
> 
> Well, you could fix your "bad planning" by just altering your table.
> 
> Create a new column, then use
> 
> UPDATE your_table SET new_column = 0 where old_column = 'N';
> 
> Set it to one for 'Y', drop the old column, rename the new column, and
> your done. Well, you'd have to do it for five columns, but it would
> "fix" it at least.
> 
> Or you could use something like this:
> 
> SELECT * FROM your_table WHERE
> LENGTH(REPLACE(CONCAT(enum1,enum2,enum3,enum4,enum5),'N','')) > 1)
> 
> That'll join all the enums together, like 'YNYNN', replace all N with
an
> empty string, resulting in 'YY', and then make sure the length is more
> than one, i.e. there are more than two 'Y' in the string.
> 
> Hope that helps.
> 
> ---John Holmes...
> 
> 
> 
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 
> 




-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to