2016-04-04 2 views
0

Ich versuche, eine kleine Sequenz auszuführen, in der der Compiler die Ordnungs-IDs auflistet, die größer oder gleich 600 sind. Gleichzeitig zähle ich die Zahlen, die jede order_id hat.MySQL: COUNT Anweisungen: Warum zeigt es nur eine Bestell-ID an?

Wenn ich meinen Code ausführen, erhalte ich nur eine order_id, während ich viel haben, die größer als 600 '

Hinweis ist: Ich habe keine Fehler erhalten.

Sequenz:

/*Exercise 1*/  
SELECT orders.order_id as 'Order ID', 
     COUNT(DISTINCT order_details.item_id) as 'Total Items' 
FROM order_details 
JOIN orders on order_details.order_id = orders.order_id 
WHERE orders.order_id >= 600 
ORDER BY orders.order_id ASC; 

Ich habe tatsächlich versuchen, es ohne DISTINCT zu versuchen und hatte das gleiche Ergebnis. Irgendeine Idee, was ich falsch mache?

* Entfernte anderen Code, wie es nicht benötigt wurde.

Zusätzliche Frage: Ist es möglich, eine count-Anweisung zu verwenden, um zu bestellen? Wie so:

SELECT orders.order_id as 'Order ID', 
     COUNT(order_details.item_id) as 'Total Items' 
FROM order_details 
JOIN orders on order_details.order_id = orders.order_id 
WHERE orders.order_id >= 600 
GROUP BY orders.order_id 
ORDER COUNT(order_details.item_id) ASC; 

Antwort

2

COUNT eine Aggregatfunktion ist, würde es aggregieren alle Zeilen in einer Zeile, wenn Sie eine GROUP BY Klausel festlegen, welche es Gruppe Was Sie wollen, ist die folgende:

/*Exercise 1*/  
SELECT orders.order_id as 'Order ID', 
     COUNT(order_details.item_id) as 'Total Items' 
FROM order_details 
JOIN orders on order_details.order_id = orders.order_id 
WHERE orders.order_id >= 600 
GROUP BY orders.order_id 
ORDER BY orders.order_id ASC; 

Das distinct würde nur notwendig sein, wenn es doppelte Entrees auf der gleichen item_id gibt, ich rate da nicht ist, also entfernte ich es.

einige nützliche Links: http://www.w3schools.com/sql/sql_func_count.asp http://www.w3schools.com/sql/sql_groupby.asp

bearbeiten, Antwort auf zweite Frage:

Ja, das ist auf jeden Fall möglich, und das Beispiel, das Sie gegeben haben, ist richtig und sollte das gewünschte Ergebnis

+0

geben Beeindruckend! Danke für die schnelle Antwort, und ich verstehe dich total gemein. Ich besuchte gerade den COUNT-Link an den w3-Schulen und ich versuchte die Simulatoren zu finden, dass du 100% richtig liegst. Danke auch für die Gruppe per Link. ALSO, danke, dass du es in meine Code-Sequenz eingefügt hast. Es ist alles sehr geschätzt! :) – Sierra

+0

Wahrscheinlich professionelle Eifersucht, aber SO scheint W3 nicht viel zu mögen. – Strawberry

+0

Kein Problem ^^ immer gut, um helfen zu können :) wenn du noch Fragen hast, ich helfe dir gerne weiter. Wenn du keine Fragen mehr hast, vergiss nicht, eine Antwort zu markieren, wenn du dann fragst ^^ – Jester

Verwandte Themen