我有四個表Mysql的選擇與3計數
users ID display_name 1 Name1 2 Name2 3 Name3
用戶可以添加圖書表書4桌
books book_id AddedByuserID 1 1 2 1 3 2 4 3
而且用戶可以添加電子書表電子書
ebooks ebook_id AddedByuserID 1 1 2 2 3 2 4 3
現在用戶只能將書籍添加到他的收藏中(不是電子書)
collection userID book_id 1 1 1 2 1 3
我需要一個像這樣的輸出:
display_name books_added ebooks_added books_in_collection Name1 2 1 3 Name2 1 2 2 Name3 1 1 1
這是什麼讓:
SELECT users.*, COUNT(DISTINCT collection.book_id) AS books_in_collection, COUNT(DISTINCT books.AddedByuserID) AS books_added, COUNT(DISTINCT ebooks.AddedByuserID) AS ebooks_added
FROM users LEFT JOIN collection ON users.ID = collection.userID
LEFT JOIN books ON users.ID = books.AddedByuserID
LEFT JOIN ebooks ON users.ID = ebooks.AddedByuserID
GROUP BY users.ID
ORDER BY display_name ASC
用戶DISPLAY_NAME獲取顯示正確,也收集次數,但其他兩個計數顯示1. 如果我刪除DISTINCT,收集計數爲86,而其他兩個計數均不顯示。
我嘗試瞭解左連接和閱讀教程,但我現在卡住了。
'Name3'發生了什麼? –
我更新了輸出。 – grusl83