2017-07-27 10 views
1

私は3つのテーブルを持っています。3つのテーブルのSQLクエリ、1つは異なるカラム名を使用

プロジェクト、キャンペーン、クライアント。

searchtermが一致する3つのテーブルすべてから結果を返す必要があります。しかし、私はプロジェクトとキャンペーンテーブルの '名前'列をチェックする必要がありますが、クライアントテーブルの '説明'列をチェックする必要があります。注:これは既存のクライアントデータベースですが、私は列名を変更する権限がありません。

例:

name as title FROM projects WHERE name LIKE %data%, 

name as title FROM campaigns WHERE name LIKE %data% 

description as title FROM clients WHERE description LIKE %data% 

私は、クエリを結合するために苦労している: 'データ' のためのユーザーの検索は、私が選択する必要があります。以下は私がこれまでに持っていた、構文エラーを返すものです。私は間違ったアプローチをとっているかもしれないとも考えています。あなたはunion allを探している

SELECT 
    p.name, 
    c.name, 
    cl.description AS title 
FROM 
    projects, 
    campaigns, 
    clients 
WHERE 
    p.name LIKE % DATA % 
OR c.name LIKE % DATA % 
OR cl.description LIKE % DATA % 
+0

この回答を確認してください:https://stackoverflow.com/questions/45327255/search-multiple-tables-for-the-same-value-and-get-table-where-result-it-comes-fr/45327692 #45327692 –

+0

[同じ値の複数のテーブルを検索し、その結果がどこにあるテーブルを取得する]の可能な複製(https://stackoverflow.com/questions/45327255/search-multiple-tables-for-the-same-value- and-get-table-where-result-it-comes-fr) –

+0

解答 –

答えて

3

SELECT name as title FROM projects WHERE name LIKE %data%, 
UNION ALL 
SELECT name as title FROM campaigns WHERE name LIKE %data% 
UNION ALL 
SELECT description as title FROM clients WHERE description LIKE %data%; 

あなたの代わりにUNION ALLUNIONを使用し、その後、重複を削除したい場合。

+0

ありがとう - 実際に返される結果が2つ以上のテーブルで同じであることを意味する複製? – DJC

+0

@ CIvemy。 。 。 'name'が結果セットに重複しないようにするには、' union'を使います。重複がないか、必要な場合は、 'all union 'を使用します。 –

関連する問題