2009-08-31 7 views
1

business_idが共通スレッドである3つの情報テーブルがあります。私は2つの入力フィールドを持っています。一般的な検索(ユーザーは必要なものを検索できます)とZIP入力です。 PHP側では、私は一般的な検索文字列をキャッチし、それを$searchに、ジップを$zipに設定しました。複数テーブル2つのPHP変数に対する全文検索

どのように私は、フルテキストindecies のいずれかをMATCHする$search変数を使用することができ、その後制限表CからのみID $zipその後、リターンを使用して、それらの試合?

私のデータベース構造は以下の通りである:

table coup 
    id << this is the my desired information from the search 
    timestamp 
    business_id 
    coupvalue 
    startdate 
    enddate 
    username 
    status 
    terms 
    image 
    description 
     primary = id 
     fulltext = name 
table bloc 
    id 
    address 
    city 
    state 
    zip 
    business_id 
    phone 
    lat 
    lon 
     primary = id 
table bus 
    business_id 
    name 
    timestamp 
    category 
    subcat 
     primary = business_id 
     fulltext = name,category,subcat 

任意の助けをいただければ幸いです!

答えて

0

あなたは試合でor条件を使用することができます。

select 
    c.id 
from 
    coup c 
    inner join bus b on 
     c.business_id = b.business_id 
    inner join block z on 
     c.buisness_id = z.business_id 
    where 
     (match(c.name) against ('$search') 
     or match (b.name, b.category, b.subcat) against ('$search')) 
     and z.zip = '$zip' 

を、私はそれをベンチマークしていないが、これは潜在的に速くなることができます:

select 
    c.id 
from 
    (select id, business_id 
    from coup 
    where match(name) against ('$search') 
    ) as c 
    left join 
     (select business_id 
     from bus 
     where match(name, category, subcat) against ('$search') 
     ) as b on 
     c.business_id = b.business_id 
    inner join bloc z on 
     c.business_id = z.business_id 
where 
    z.zip = '$zip' 
+0

私はc.nameを追加したいです、b.category、bcatもマッチする。 –

+0

フルテキスト検索は、それぞれのインデックスでのみ機能します。私が知る限りでは、マルチテーブルフルテキストインデックスを行うことはできません。 – Eric

関連する問題