2016-12-19 48 views
0

受注テーブル:PHP/MYSQLカウント注文

enter image description here

ORDER_ITEMS表:

enter image description here

Usersテーブル:

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"; 

すべてのユーザーの注文数をカウントしたいと思います。例:Thomasは3つの注文を持っていますが、私のコードは1を書いています。私はThomas(3)と書いています。そしてどれくらいのお金が費やされましたが、これはうまくいきます。どのようにそれを修正するための任意のアイデア?

答えて

2

以下のクエリを試すことができます。

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 

これはあなたを助けるでしょう。

+0

はい、うまく動作します!ありがとうございます=) –

0

あなたが求めているものについては、クエリは次のようになります。私は、重要な変化を強調してきた

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 

+1

dosnt work。 (Erik 3 - Gracian 2 - Alex 1 - Thomas 1)、それ以外のアイデアはどうやって修正すればい​​いの? –