2016-09-02 6 views
0

私はmake、モデル、年などの複数のテーブルを持ち、ジョインを使用しています。私は1つのテキストフィールドから検索したいと思います。同様のユーザーが「Audi A1 2015 Red Variant」と入力すると、この「Audi A1 2015 Red Variant」の代わりに結果が表示されるので、正しいSQLが実装されていれば、あなたの提案は高く評価されますか?mysqlの1つのテキストフィールドで複数のフィールドを検索するには?

SELECT 
    make.make_name, 
    model.model_name 
FROM cars 
    INNER JOIN make 
ON make.make_id = cars.fk_make_id 
    INNER JOIN model 
ON model.model_id = cars.fk_model_id 
WHERE cars.fk_make_id = 6 
AND (make.make_name LIKE '%Audi A1%' 
     OR model.model_name LIKE '%Audi A1%') 

上記のsqlは0の結果を返します。

+0

解決策をお探しですか? –

+0

私が答えたことを確認しましたか? –

+0

はい、それは動作していません、私が投稿したSQLを参照してください。 –

答えて

1

これを達成するのは簡単ではありません。ユーザーの入力のどのトークンをどのテーブルのどのフィールドと比較する必要があるかを判断できる必要があるからです。おそらく、達成しようとしていることをすでに行っているelasticsearchのようなフルテキスト検索エンジンのソリューションがあります。

ElasticsearchはLuceneをベースにした検索エンジンです。 HTTP WebインターフェイスとスキーマフリーのJSONドキュメントを備えたマルチテナント対応のフルテキスト検索エンジンを提供します。 ElasticsearchはJavaで開発され、Apache Licenseの条件でオープンソースとしてリリースされています。 ElasticsearchもLuceneの

に基づいてのApache Solrのに続いて最も人気の企業向け検索エンジン、である - ウィキペディア

あなたはelasticsearchはあなたのための急な学習曲線であると思われる場合、私はあなたがあなたの検索を壊すことによって簡素化することをお勧め個々のフィールドを形成し、頭痛を軽減します。

関連する問題