我會盡量簡化。幫助與mysql連接/分組
此查詢列出了我的網站用戶,他們的總訂單,卡片和文件中的地址。
由於某些原因,如果用戶有2個地址,但只有1個訂單,它會顯示客戶有2個訂單。
例如:user4實際上只有1個訂單,但顯示2,我假設它,因爲他有2個地址,它與連接或分組有關。
SELECT
users.user_email,
users.user_firstname,
users.user_lastname,
users.user_joindate,
users.user_logindate,
Count(users_addresses.usera_id) AS count_addr,
Count(users_cards.userc_id) AS count_cards,
Count(orders.order_id) AS count_orders,
Sum(orders.order_total) AS sum_ordertotal
FROM
users
LEFT JOIN users_addresses ON users_addresses.usera_userid = users.user_id
LEFT JOIN users_cards ON users_cards.userc_userid = users.user_id
LEFT JOIN orders ON orders.order_userid = users.user_id
GROUP BY
users.user_id
ORDER BY user_id DESC
LIMIT 5
實施例輸出中:
userid | orders | addresses | cards
------ ----------------------------
user4 | 2 | 2 | 0
user3 | 0 | 0 | 0
user2 | 1 | 1 | 0
user1 | 0 | 1 | 0
DISTINCT供職的數量和它*似乎*它的工作的總和爲好。謝謝! – tuurbo
我檢查並檢查了兩次,當我添加DISTINCT到它的工作時間以及。 – tuurbo
請注意,您希望在count(distinct)中使用表的不同鍵 - 看起來您使用的是user_id,它總是會返回1的計數。另外,在SUM()內使用'distinct'可能看起來像去工作,但它實際上只是加總不同的金額。如果您有兩筆相同金額的訂單(針對同一用戶),則無法正確計數。 –