1
我無法理解嵌套查詢。我有一個評論表和一個帖子表,我想計算給定網站給定日期範圍內的評論數量。這部分我可以做得很好,但如果在日期範圍內沒有對這些日期之一進行評論,那麼它只是跳過它。在Postgres中嵌套或引用查詢
因此,我發現了一個查詢,它構建了完整的日期範圍並計算了相應的註釋數量。
SELECT drange.date, count(comm.id)
FROM
(
SELECT to_char(date_trunc('day', (current_date - offs)), 'YYYY-MM-DD') AS date
FROM generate_series(1, 7, 1) AS offs
) drange
LEFT OUTER JOIN
comments comm ON (
drange.date=to_char(date_trunc('day', comm.created_at), 'YYYY-MM-DD')
)
GROUP BY drange.date;
現在這返回部分我想要的東西,但當然不會影響posts表。
date count
2016-01-11 2
2016-01-12 0
....
2016-01-07 1
所以我知道count(comm.id)
需要引用inner join posts
,但我不能得到那個工作,同時仍保持完整的日期範圍不變。在以下的職位表因素的查詢,但擺脫了日期
SELECT drange.date, count(comm.id)
FROM
(
SELECT to_char(date_trunc('day', (current_date - offs)), 'YYYY-MM-DD') AS date
FROM generate_series(1, 7, 1) AS offs
) drange
LEFT OUTER JOIN comments comm ON (
drange.date=to_char(date_trunc('day', comm.created_at), 'YYYY-MM-DD')
)
INNER JOIN
posts ON (comm.post_id = posts.id)
WHERE posts.site_id = 35
GROUP BY drange.date;
返回的其餘部分:
date count
2016-01-07 1
那麼,有沒有對這些查詢相結合的正確道路?我不明白如何引用內部連接結果。任何幫助,將不勝感激。謝謝。
如果使用也許會更容易[CTE的(http://www.postgresql.org/docs/9.1/static/queries-with.html)如果你已經有一個查詢工作命名CTE並在第二個查詢中使用它。 CTE的工作原理與子查詢完全相同,但易於閱讀,並且可以重複使用。 –