2016-08-17 2 views
-1

Gibt es eine einfache Erklärung, warum diese Abfrage nicht funktioniert, und was ist ihre Alternative?Wie Debuggen einer fehlerhaften SELECT-Anweisung?

SELECT * FROM items WHERE item_category = 'shirts' 
    AND WHERE item_category = 'pants' 

Ich habe die Klausel zu halten:

SELECT * FROM items 

, weil ich alle Daten benötigen, die für die spätere Verwendung ausgewählt wird.

+1

Sie haben einen zusätzlichen 'WHERE', aber das wird nie irgendwelche Ergebnisse zurück. 'item_category' kann niemals' hit' und 'hose' bedeuten. – Chris

+2

@Chris vielleicht hat er Jumpsuits oder Onesies :-) –

Antwort

4

Sie WHERE nicht zweimal umfassen:

SELECT * FROM items WHERE item_category = 'shirts' OR item_category = 'pants' 

Sie wollen nicht auch „AND“ angeben, da es keinen Punkt sein, wo beide item_categoryshirts und pants zugleich sein .

4

Sie haben zwei WHERE Schlüsselwörter; das zweite ist nicht notwendig - es erzeugt einen Fehler.

Allerdings sollten Sie die Abfrage vereinfachen IN zu verwenden:

SELECT i.* 
FROM items i 
WHERE i.item_category IN ('shirts', 'pants'); 
+0

Streng genommen ist diese Abfrage nicht äquivalent zu der OP's fehlerhafte 'AND'. (Es ist wahrscheinlich, was die OP _wants_, obwohl.) – Chris

+0

Vergessen über die 'IN()' -Klausel. Schöne Alternative + Upboat – FrankerZ

Verwandte Themen