0
所以我有3個表:Recommendation
,Article
和User
。註解行,如果向後關係存在(Postgres的)
建議有4列:
id | integer
article_id |integer
user_id |integer
submit_time |integer
文章有3列:
id | integer
title
url
我需要獲得所有物品的清單,同時還標註每行一個新的推薦欄,其如果有問題的用戶推薦了文章,則爲1,否則爲0。不應該有在結果的任何重複Article
,我需要它下令在Recommendation
的submit_time
列。
這是Postgres的 - 9.1.8。
SELECT DISTINCT ON(t.title) t.title,
t.id, t.url,
MAX(recommended) as recommended
FROM (
SELECT submitter_article.title as title,
submitter_article.id as id,
submitter_article.url as url,
1 as recommended
FROM submitter_article, submitter_recommendation
WHERE submitter_recommendation.user_id=?
AND submitter_recommendation.article_id=submitter_article.id
UNION ALL
SELECT submitter_article.title as title,
submitter_article.id as id,
submitter_article.url as url,
0 as recommended
FROM submitter_article
) as t
GROUP BY t.title, t.id, t.url, recommended
而且我傳遞一個user id
到?
我一直在想了一會兒做這個,但不能弄明白。我拿出無論是查詢返回所有recommended
值0,或返回重複的物品列(一個recommended=0
和其他與recommended=1
)。
任何想法?