我有對posts
和兩個表的表的簡單模式來跟蹤views
和upvotes
:聚合兩個不同的事件與一個單一的查詢表
CREATE TABLE posts (
id integer NOT NULL PRIMARY KEY,
title VARCHAR(255) NOT NULL
);
CREATE TABLE views (
post_id integer,
value integer
);
CREATE TABLE upvotes (
post_id integer,
value integer
);
請注意:views
和upvotes
元組代表一般數量的觀點和upvotes。我想彙總帖子,顯示的總觀看次數和點贊。
我認爲這很簡單,但不幸的是我失敗了。
這是我的查詢:
SELECT posts.title,
SUM(views.value) AS views,
SUM(upvotes.value) AS upvotes
FROM posts
LEFT OUTER JOIN views ON (posts.id = views.post_id)
LEFT OUTER JOIN upvotes ON (posts.id = upvotes.post_id)
GROUP BY posts.id;
我明白爲什麼它的失敗,但我真的不知道如何去做。如果我需要運行兩個不同的查詢並在應用程序級別彙總結果,那我就沒問題。我只想了解是否可以用單個查詢
我創建了一個sqlfiddle with my test case。
PS:我設法使用一個通用表來跟蹤事件,但我希望保持表格分離。 sqlfiddle here。