2010-12-29 2 views
0

トラック用のメンテナンスレコードのMySQLデータベースを検索しようとしています。私が探しているテーブルは、Maintenance、Truck、maintenance_partsです。メンテナンステーブルのスコアに追加するトラックとメンテナンスのパーツテーブルからFULLTEXTスコアを取得するには、何が必要ですか?MySQL FULLTEXT複数のテーブルの得点

SELECT maintenance_id, some_id, type_code, service_date, mileage, mg_id, mg_type, comments, work_done, 
    MATCH(comments, work_done) AGAINST('valve tire') AS score 
    FROM maintenance 
    WHERE type_code = 'truck' 
    AND some_id IN (
     SELECT truck_id FROM truck 
     WHERE MATCH(truck_number, make, model, engine, vin_number, transmission_number, comments) AGAINST('P') 
     OR truck_number LIKE '%P%' 
    ) 
    AND maintenance_id IN( 
     SELECT maintenance_id FROM maintenance_parts WHERE MATCH(part_num, part_desc, part_ref) AGAINST('valve tire') 
    ) 
    OR MATCH(comments, work_done) AGAINST('valve tire') 
    AND status = 'A' ORDER BY score DESC LIMIT 0, 30 
+1

サブクエリを排除するためにクエリを書き直す必要があります。サブクエリを排除するには、サブクエリを削除してください。サブクエリのフルテキスト検索が親クエリまで移動すると、そこにスコアに参加することができます。 –

+0

1文字の長さの単語/文字列と一致しています... – ajreal

+0

@Marc B - ありがとうございました。あなたがあなたの答えを加えたら私はそれを受け入れます。 –

答えて

0

サブクエリを排除するためにクエリを書き直す必要があり、代わりに結合を使用する必要があります。サブクエリのフルテキスト検索が親クエリまで移動すると、そこにスコアに参加することができます。

関連する問題