私のクエリでは、 に割り当てることがFULLTEXT INDEX
できないという問題に遭遇しましたがDERIVED TABLE
、これは正常なようです。
の例は、data
としてインデックス付けできないことを示していますFULLTEXT
がcontent
、 、text
、および列は、「実際の」テーブルのようにrecord
既にインデックス付けされていますFULLTEXT
SELECT `data` FROM SELECT(
SELECT `content` as `data` FROM `table1`
UNION SELECT `text` as `data` FROM `table2`
UNION SELECT `record` as `data` FROM `table3`
) as `search`
実際のコードではSELECT MATCH() AGAINST()
、テーブルからスコアを取得するscore
ために使用し、それらを UNION して各テーブルを取得します。これらの UNION はサブクエリであり、最初のレベル (メイン) の SELECT は、それらの UNION を派生テーブルとして選択し、それらからスコアを計算しますが、これはまだ完成してない。参照に INDEX がないというエラーが発生します。(上記の例のように)。
これらが、JOINSで私の目標を達成できるかどうかを尋ねることにした理由です.
これが私の実際の(動作する)コードです:
SELECT *,MATCH(`data`) AGAINST('keyword' IN BOOLEAN MODE) as `relevance`
FROM (
SELECT CONCAT(`title`,' ',`content`) as `data`,`id`,'tmp_pages' as `table`,
MATCH(`title`,`content`) AGAINST ('keyword') AS `score`
FROM `tmp_pages`
WHERE MATCH(`title`,`content`) AGAINST ('keyword')
UNION
SELECT CONCAT(`title`,' ',`content`) as `data`, `id`,'tmp_news' as `table`,
MATCH(`title`,`content`)
AGAINST ('keyword') AS `score`
FROM `tmp_news`
WHERE MATCH(`title`,`content`) AGAINST ('keyword')
UNION
SELECT CONCAT(`title`,' ',`content`) as `data`,`id`,'tmp_comments' as `table`,
MATCH(`title`, `content`)
AGAINST ('keyword') AS `score` FROM `tmp_comments`
WHERE MATCH(`title`, `content`) AGAINST('keyword')
UNION
SELECT CONCAT(`manufacturer`,' ',`model`,' ',`location`,' ',`other`,' ',`contact`) as `data`,`id`,'tmp_auction_auto' as `table`,
MATCH(`manufacturer`,`model`,`location`,`other`,`contact`) AGAINST ('keyword') AS `score`
FROM `tmp_auction_auto`
WHERE MATCH(`manufacturer`,`model`,`location`,`other`,`contact`)
AGAINST ('keyword')
) as `search` ORDER BY `relevance` DESC
JOIN
この部分をクエリのタイプに変えて、期待どおりに機能させることができるかどうかを知りたいです。もしそうなら、私はそれを行う方法を親切に尋ねます。