0

私は多くのオブジェクト(エンティティ)を持っています。たとえば、「ニュース」、「ブログ」、「コメント」などです。登録ユーザーに、「ニュース」または「ブログ」がどれほど新しいかを示す必要があります。

ここで、多対多の関係を作成します。たとえば、フィールドを含む「users-news-reader」:id、userId、newsId; 「ニュース」のリレーションが存在する場合、この「ニュース」はすでに読み込まれています。つまり、「ニュース」のカウントは、現在のユーザーの新しい「ニュース」のカウントです。

したがって、この方法では、多対多の関係のために多くのテーブルがあります。より美しく正確にするにはどうすればよいですか?

4

1 に答える 1

0

これは SQL で実行できます。

テーブル:

user_logons (username,logontime datetime)
news (newsitem,newstime datetime)
user_news (newsitem,username)

SQL

SELECT count(*),newsitem FROM news LEFT JOIN user_news ON user_news.newsitem=news.newsitem WHERE newstime > 
(SELECT logontime FROM user_logons ORDER BY logontime DESC LIMIT 1) 
AND user_news.username IS NULL

動作するはずです。これにより、ユーザーが表示していない最後のログオン以降の新しいニュースのみが表示されます。これをブログにも適応させることができます。これにより、新しい記事の数もカウントされます。悲しいことに、テストする時間がありません。sqlfiddle.com を試す

于 2013-06-11T11:43:24.457 に答える