On 4 May 2007 at 1:21, Daevid Vincent wrote:

> I'm having trouble figuring out the logic/query I want.
> I know that all those "OR"s are not right.
[snip]
> WHERE  products.enabled = 1 
>       AND( 
>           (products.model LIKE 'sony%'   OR products.model LIKE '20%'  OR 
> products.model LIKE 'tv%') 
>        OR (products.upc LIKE 'sony'      OR products.upc LIKE '20'     OR 
> products.upc LIKE 'tv') 
>        OR (products.name LIKE '%sony%'   OR products.name LIKE '20%'   OR 
> products.name LIKE '%tv%') 
>        OR (companies.name LIKE 'sony%'   OR companies.name LIKE '20%'  OR 
> companies.name LIKE 'tv%') 
>        OR (categories.name LIKE '%sony%' OR categories.name LIKE '20%' OR 
> categories.name LIKE '%tv%') 
>       ) 
[snip]

It seems to me that the logic you're looking for is something more like

(products.model LIKE 'sony%'   OR products.upc LIKE 'sony'      OR
  products.name LIKE '%sony%'   OR companies.name LIKE 'sony%'   OR
  categories.name LIKE '%sony%'
) AND (
  products.model LIKE '20%'  OR products.upc LIKE '20'     OR
  products.name LIKE '20%'   OR companies.name LIKE '20%'  OR
  categories.name LIKE '20%'
) AND (
  products.model LIKE 'tv%' OR products.upc LIKE 'tv' OR
  products.name LIKE '%tv%' OR companies.name LIKE 'tv%' OR
  categories.name LIKE '%tv%'
)

so that each of the search terms appears in at least one of the relevant 
columns.
-- 
Iain Alexander      [EMAIL PROTECTED]



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

Reply via email to