2017-02-05 18 views
0

私はゲームのウォークスルーの作者です。すべての基準に一致するすべての行を表示しようとしています。現在、テーブルには各テーブルの結果が表示されますが、これらの結果をマージして、検索条件がすべての入力と一致する場合は一致する行のみを返すようにします。これを達成する最良の方法は何ですか?私はUNION句の前にANDを使用しようとしていましたが、エラー#1064が返されます。SQLクエリの結果をマージする

このサンプルテーブルを用意しましょう。

+--------+-------------------------+------------+--------------+ 
| FAQ_ID |  FAQ_Title  | Game | Platforms | 
+--------+-------------------------+------------+--------------+ 
|  32 | General Walkthrough FAQ | WWE  | PS2, PSP, DS | 
|  34 | Early EXP Farming FAQ | Digimon | PS4, PS Vita | 
|  35 | General Walkthrough FAQ | Toy Story | PS1   | 
|  36 | General Walkthrough FAQ | Metal Slug | DS   | 
+--------+-------------------------+------------+--------------+ 

は、それから私は、これが唯一の36のFAQ_IDで行を返し、残りの部分を排除しなければならない

SELECT FAQ_ID, FAQ_Title, Game, Platforms FROM faqlist WHERE FAQ_Title 
LIKE 'General Walkthrough%' 
AND UNION 
SELECT FAQ_ID, FAQ_Title, Game, Platforms FROM faqlist WHERE Platforms = '%DS%' 
AND UNION 
SELECT FAQ_ID, FAQ_Title, Game, Platforms FROM faqlist WHERE Game = 'Metal Slug' 
ORDER BY FAQ_ID ASC; 

このコードを持っています。

+0

ヒントを。 – Blank

+0

正規化してください。 – Strawberry

+0

すべての基準に一致する結果を表示したかったのです。一般的なウォークスルーとしてのユーザー入力タイプ、メタルスラッグとしてのゲーム、DSのプラットフォームの場合は、FAQ_ID 36の行のみを表示する必要があります。32,34,35は条件と一致しないため表示しないでください –

答えて

1

また、このようなORやAND条件を使用することができます: `WHERE`またはUNION`` `前AND`を削除するには、いくつかの` OR`年代:

SELECT FAQ_ID, FAQ_Title, Game, Platforms 
FROM faqlist 
WHERE 
    FAQ_Title LIKE 'General Walkthrough%' 
OR 
    Platforms = '%DS%' 
OR 
    Game = 'Metal Slug' 
ORDER BY FAQ_ID ASC; 
+0

はいこれは 'UNION'節を使って可能でしょうか? –

関連する問題