2016-12-19 3 views
0

Tabelle Bestellungen:PHP/MYSQL Zählen Bestellungen

enter image description here

Order_items Tabelle:

enter image description here

Tabelle Benutzer:

Users

$sql[2] = "SELECT u.name, COUNT(o.user_id) AS order_count, (oi.quantity * p.price) AS total_price FROM users AS u 
     INNER JOIN orders AS o ON u.id = o.user_id 
     INNER JOIN order_items AS oi ON oi.order_id = o.id 
     INNER JOIN products AS p ON p.id = oi.product_id 
     GROUP BY u.name 
     ORDER BY ertek DESC"; 

Ich möchte zählen, wie viel Bestellung hat jeder Benutzer. Beispiel: Wie Thomas 3 Bestellung, aber mein Code schreibt 1, möchte ich Thomas (3) schreiben. Und wie viel Geld ausgegeben, aber dieses hier funktioniert gut. Irgendeine Idee, wie man es repariert?

Antwort

2

Sie können unter Abfrage versuchen.

select u.name, (select count(*) from orders o where o.user_id=u.id) as 
order_count, (select sum(oi.quantity * p.price) from orders AS o INNER 
JOIN order_items AS oi ON oi.order_id = o.id INNER JOIN products AS p ON 
p.id = oi.product_id where o.user_id=u.id) as total_price from users u 

Vielleicht hilft Ihnen dies.

+0

Ja, es funktioniert gut! Danke =) –

0

Für das, was Sie fordern, sollte die Abfrage wie folgt aussehen:

SELECT u.name, 
     COUNT(DISTINCT o.id) as order_count, 
-------------^ 
     SUM(oi.quantity * p.price) as total_price 
-------^ 
FROM users u INNER JOIN 
    orders o 
    ON u.id = o.user_id INNER JOIN 
    order_items oi 
    ON oi.order_id = o.id INNER JOIN 
    products p 
    ON p.id = oi.product_id 
GROUP BY u.name 
ORDER BY order_count DESC; -- I assume `ertek` is just a translation issue 

ich die wichtigen Änderungen hervorgehoben habe.

+1

dosnt arbeiten. es zählt nur 7 (Erik 3 - Gracian 2 - Alex 1 - Thomas 1), aber ich habe mehr Bestellungen als 7, jede andere Idee, wie man es repariert? –

Verwandte Themen