2017-01-29 4 views
0

Ich möchte Ergebnisse kleiner als 3 herausfiltern, aber wenn ich die WHERE-Anweisung hinzufügen, schlägt die Abfrage fehl. Was ist falsch an meiner Anfrage? Ich benutze MySQL Workbench 3.7SQL WHERE filtert meine Ergebnisse nicht

Vielen Dank! Yoni

+0

Abfragen müssen der Syntax entsprechen – Strawberry

Antwort

-1

Need HAVING nach GROUP BY nicht WHERE zu verwenden:

SELECT 
    c.name, COUNT(DISTINCT s.product_id) AS veggies 
FROM 
    sales AS s 
    INNER JOIN customers AS c ON c.id = s.customer_id 
GROUP BY 
    s.customer_id 
HAVING 
    veggies > 2 
+0

würde der downvoter bitte einen Kommentar hinterlassen –

2

Die where sollte having sein:

SELECT c.name, COUNT(DISTINCT s.product_id) AS veggies 
FROM sales s INNER JOIN 
    customers c 
    ON c.id = s.customer_id 
GROUP BY s.customer_id 
HAVING veggies > 2; 

Entweder Ihre Abfrage einen Syntaxfehler erzeugt (das heißt, nicht ausgeführt werden) oder es blieb an der GROUP BY und ignoriert die WHERE.

-1

Grouping requires knowledge of entire list. There is an order of operations in mysql query. (Klick auf diesen Link wird Sie die Seite, die das beantwortet)

Das wird sich hoffentlich arbeiten,

SELECT c.name, COUNT(DISTINCT s.product_id) AS veggies' 
FROM sales AS s 
INNER JOIN customers AS c 
ON c.id=s.customer_id 
WHERE veggies > "2" 
GROUP BY s.customer_id 

durch diese beiden Linien tauschen.

GROUP BY s.customer_id 
WHERE veggies > "2" 

GROUP BY immer kommt nach WHERE.

Zusätzlich fehlt hier ein Eröffnungszitat um 2.

WHERE veggies > 2" 

Und ein unnötiges einzelnes Anführungszeichen (') am Ende der ersten Zeile.

Verwandte Themen