Thanks Paul,

I figured that was the answer.  Do I need to perform a second and third
query from my related tables with a join back to the 'main' table?

Example:

select main.id, main.description, maincat.name, subcat.name from main LEFT
JOIN maincat ON main.maincatid=maincat.id LEFT JOIN subcat ON
main.subcatid=subcat.id WHERE MATCH (name) AGAINST ('keywords') WHERE MATCH
(description, etc, etc2, etc3 ) AGAINST ('keywords')

select main.id, main.description, maincat.name, subcat.name from maincat
LEFT JOIN main ON maincat.id=main.maincat LEFT JOIN subcat ON subcat.id
=main.subcatid WHERE MATCH (name) AGAINST ('keywords')

select main.id, main.description, maincat.name, subcat.name from subcat LEFT
JOIN main ON subcat.id=main.subcat LEFT JOIN maincat ON maincat.id
=main.maincatid WHERE MATCH (name) AGAINST ('keywords')

I would then have 3 arrays that I could join and sort and use as my results.
I am not sure if this is more work than it is worth.  I don't want to
duplicate data but I am thinking of just adding a 'maincatname' and
'subcatname' columns to my 'main' table and update them from the related
tables.

Thanks for your help,

Dan

> At 13:43 -0700 3/26/02, Dan Tappin wrote:
>> This is a follow-up to a MySQL keyword text search question I had answer a
>> few days ago.
>> 
>> I have table 'main' which has two INT columns 'maincat' and 'subcat' which
>> hold an index number from to other tables maincat and subcat.  These table
>> each hold descriptive names ('name') for each of the main categories and sub
>> categories.
>> 
>> I have no problem using MATCH to search the various fields of 'main' using
>> an INDEX.  The problem is I want to create a search across the related
>> 'name' fields of the other two tables.
>> 
>> Here is what I have so far:
>> 
>> select main.id, description, maincat.name, subcat.name from main LEFT JOIN
>> clients ON forsale.clientid=clients.id WHERE MATCH (description) AGAINST
>> ('keywords')
>> 
>> This works but I can only MATCH in the columns of 'main'.
>> 
>> Now my first thought was to try this:
>> 
>> select main.id, description, maincat.name, subcat.name from main LEFT JOIN
>> clients ON forsale.clientid=clients.id WHERE MATCH (description,
>> maincat.name, subcat.name) AGAINST ('keywords')
>> 
>> Which results in an error.
>> 
>> Can anyone tell me if I can do this using MATCH?
> 
> Nope.
> 
> The columns named in the MATCH() must match the columns for a FULLTEXT
> index, and indexes don't cross tables.
> 
>> 
>> Thanks,
>> 
>> Dan


---------------------------------------------------------------------
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