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