複数のテーブル(ニュース、記事、プロジェクト、ファイル)を検索するクエリを作成したい
検索中にこれを見つけました
SELECT title, post FROM news WHERE MATCH (title,post) AGAINST ('press');
テストして動作しましたが、これを複数のテーブルに拡張できませんでした。
複数のテーブルの検索結果を返す1つのクエリを作成するにはどうすればよいですか?
これはそれを行う1つの方法です。マッチが何をするのかわかりませんが、どこでマッチ機能もできます
Select Table1.Title, Table2.Post FROM Table1, Table2 WHERE Table1.Title = 'press' AND Table2.Title = 'press'
このクエリは、両方にプレスが含まれている2つのテーブルのタイトルと投稿を提供します。
1つの方法は、union
:を使用することです。
SELECT title, post FROM news WHERE MATCH (title,post) AGAINST ('press')
UNION
SELECT title, post FROM articles WHERE MATCH (title,post) AGAINST ('press')
UNION
SELECT title, post FROM projects WHERE MATCH (title,post) AGAINST ('press')
UNION
SELECT title, post FROM files WHERE MATCH (title,post) AGAINST ('press')
これは基本的に1つの疑似テーブルになり、すべてのレコードが1つのデータセットにマージされます。
このクエリを見てください、あなたはこのように使うかもしれません-
SELECT *
FROM news t1, articles t2, projects t3, files t4 WHERE MATCH ( t1.title, t1.post)
AGAINST ('press') or Match(t2.title,t2.post) AGAINST('press')
検索したいすべての列をMATCH()関数に設定します。
あなたはこれを試すことができます、それはあなたのために役立つかもしれません。