2017-02-05 3 views
0

Ich bin ein Walkthrough-Autor für Spiele. Ich versuche, alle Zeilen anzuzeigen, die alle Kriterien erfüllen. Momentan zeigt die Tabelle Ergebnisse aus jeder der Tabellen an, aber ich möchte diese Ergebnisse zusammenführen, sodass, wenn das Suchkriterium mit allen Benutzereingaben übereinstimmt, nur Zeilen zurückgegeben werden, die zu diesem Ergebnis passen. Was ist der beste Weg, dies zu erreichen? Ich habe versucht, UND vor den UNION-Klauseln zu verwenden, aber es gibt mir Fehler # 1064.Zusammenführen von SQL-Abfrage-Ergebnissen

Lassen Sie uns diese Beispieltabelle haben.

+--------+-------------------------+------------+--------------+ 
| 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   | 
+--------+-------------------------+------------+--------------+ 

Dann habe ich diesen Code

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; 

Dies ist nur die Zeile mit FAQ_ID von 36 zurückgeben sollte und eliminiert den Rest.

+0

Hinweis: einige 'OR' die in' WHERE' oder entfernen 'und' vor' UNION'. – Blank

+0

Normalisieren Sie einfach. – Strawberry

+0

Ich wollte ein Ergebnis anzeigen, das allen Kriterien entspricht. Wenn die Benutzereingabetyp als allgemeine Walkthrough, ein Spiel als Metal Slug und Plattformen als DS, sollte es nur die Zeile von FAQ_ID 36 anzeigen. 32, 34 und 35 sollten nicht angezeigt werden, da es nicht die Kriterien –

Antwort

1

Sie können auch die OR oder AND Bedingung wie folgt verwenden:

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

Ja aber entspricht Wäre das möglich mit der UNION-Klausel? –