0

したがって、住所、名前など、それぞれ6つの列を持つ約6つのテーブルがあります。ユーザーが「単語」を入力する検索機能を実装する必要があり、単語を見つけるためにデータベース全体(6つのテーブルすべて)を検索する必要があります、単語が見つかると、その特定の行がそのテーブルから返されます。どうすればこれを行うことができますか?

4

3 に答える 3

1

6 つのテーブルすべての列名が同じであると仮定すると、このクエリを使用できます。

SELECT * FROM TABLE1 WHERE 
    col1 LIKE '%searchValue%' OR col2 LIKE '%searchValue%' OR 
    col3 LIKE '%searchValue%' OR col4 LIKE '%searchValue%' OR 
    col4 LIKE '%searchValue%' OR col6 LIKE '%searchValue%'
UNION ALL
SELECT * FROM TABLE2 WHERE 
    col1 LIKE '%searchValue%' OR col2 LIKE '%searchValue%' OR 
    col3 LIKE '%searchValue%' OR col4 LIKE '%searchValue%' OR 
    col4 LIKE '%searchValue%' OR col6 LIKE '%searchValue%'
UNION ALL
SELECT * FROM TABLE3 WHERE 
    col1 LIKE '%searchValue%' OR col2 LIKE '%searchValue%' OR 
    col3 LIKE '%searchValue%' OR col4 LIKE '%searchValue%' OR 
    col4 LIKE '%searchValue%' OR col6 LIKE '%searchValue%'
 and so on...

6 つのテーブルの列名が異なる場合でも使用できますがunion all、列の名前を変更する前に、すべての選択で同じ列名が返されるようにする必要があります。

SELECT col_a as COL1, col_b as COL2, col_c AS COL3, col_d AS COL4, col_e AS COL5, col_f as COL6 FROM TABLE1 WHERE ....
UNION ALL
SELECT col_q as COL1, col_w as COL2, col_e AS COL3, col_r AS COL4, col_t AS COL5, col_y as COL6 FROM TABLE2 WHERE ....
etc..

上記の 2 つのクエリのどちらも目的に合わない場合でも、単一のクエリを使用して、6 つの異なる select ステートメントを実行できます。

于 2012-04-18T19:26:21.763 に答える
0

Google - MySQL 全文検索

于 2012-04-18T19:21:57.857 に答える
0

LIKE 句とワイルドカードを使用します。(phpの例)

'Select * FROM Table_Nam WHERE column_Nam1 LIKE %' . $searchValue . '%'.
    'OR column_Nam2 LIKE %' . $searchValue . '%'.
    'OR column_Nam3 LIKE %' . $searchValue . '%'.
    'OR column_Nam4 LIKE %' . $searchValue . '%'.
    'OR column_Nam5 LIKE %' . $searchValue . '%'.
    'OR column_Nam6 LIKE %' . $searchValue . '%'.;
于 2012-04-18T19:19:37.903 に答える