I have a tables called pages, page_views, page_items and page_votes. The latter three tables contain a page_id foreign key in order to keep a record of each individual view, item and vote that belongs to a page.
When I query a page, I also want to retrieve COUNT page_views, COUNT page_items and SUM page_votes.vote.
I have pasted a query below. It retrieves the total number of views. I’ve made various attempts to add items and votes to it, but the result is either a syntax error or views/items/votes returned as an identical and ‘wrong’ number, probably due to the way I am joining.
How can I add items and votes to this query?
SELECT Page.*, COUNT(*) AS views FROM pages AS Page INNER JOIN page_views AS PageView ON Page.id = PageView.page_id GROUP BY Page.id ORDER BY views DESC LIMIT 10 OFFSET 0
This will select
TOP 10 viewedpages, and will count items and votes only for these pages.Efficient if you have lots of pages but need only
10of them, eliminates unneeded counting.Even more efficient query:
, eliminates unneeded joins with
pages.