Hi!

On Nov 17, Sergei Golubchik wrote:
> Hi!
> 
> On Nov 17, boris hajduk wrote:
> > Saturday, November 17, Bruce Ferrell wrote:
> > 
> > BF> SELECT position, title FROM WHERE position1 IN (1...200) OR position2 IN
> > BF> (1...200);
> > 
> > no, i wasn't clear enough, let's try it again.
> >
> > the table book contains :
> > 
> > |-- title -----|--position1--|--position2--|--lots of other fields---
> > | bravenewworld|          0  |             |
> > | foundation   |          1  |             |
> > | shortstories |          2  |          3  |
> > | neuromancer  |          4  |          7  |
> > | hyperion     |          8  |          6  |
> > | salem        |          5  |             |
> > | lovedeath    |         11  |          9  |
> 
> And what's the problem ?
> 
> $_=join(",",(1..200));
> $result=mysql_query( << AAAA );
> SELECT IFNULL(position2,position1) as position,title
>       WHERE position1 IN ($_) OR position2 IN ($_) ORDER BY position;
> AAAA

Correction - this one is wrong, it will list each entry only once.

> You may change IFNULL to IF, if you use another 'dummy' value.
> 
> Still, it won't be very fast as MySQL cannot use _two_ indexes at one.
> If you don't mind using MySQL 4.0 you can use UNION:
> 
> $_=join(",",(1..200));
> $result=mysql_query( << AAAA );
> SELECT position1 as position,title WHERE position1 IN ($_) UNION
> SELECT position2 as position,title WHERE position2 IN ($_) ORDER BY position;
> AAAA

This one is ok.

> This way MySQL will resolve both SELECT with indexes.
> 
> Regards,
> Sergei
> 
Regards,
Sergei

-- 
MySQL Development Team
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /   Sergei Golubchik <[EMAIL PROTECTED]>
 / /|_/ / // /\ \/ /_/ / /__  MySQL AB, http://www.mysql.com/
/_/  /_/\_, /___/\___\_\___/  Osnabrueck, Germany
       <___/

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to