DBに10人のユーザーがいます。各ユーザーは、必要な数のリンクを投稿できます。各ユーザーは、他のユーザーによって投稿されたすべてのリンクを見ることができます。
1人のユーザーがリンク(例:google.com)をクリックしても、そのリンクは再び表示されませんが、そのリンクをクリックしていないユーザーは、引き続きそのリンクをクリックできます。
このために、2つのテーブルがあります(外部キーに関連していないことに加えて、おそらくそれらは正しく構築されていません)。
linksPosted
id | link | user
1 g.com john
2 h.com patrick
3 i.com stephan
4 k.com bart
....
clicksMade
id | link | user
1 g.com jack
2 h.com nick
...
そのため、すべてのユーザーが他のユーザーによって投稿されたリンクを見ることができるメインページがあります。リンクが投稿されるたびに、これはlinksPostedテーブルに追加されます。わかった。
次に、たとえば、ジャックはg.comをクリックしたため、g.comを再度クリックすることはできません。しかし、ニックはg.comをクリックしていないので、クリックすることができます。
SQLクエリではなく、一部のユーザーに一部の行を表示し、他のユーザーには表示しないようにするにはどうすればよいですか?
私は私が望む結果なしでこれを試しました:
Select * from linksPosted Except Select * from ClicksMade
SELECT * FROM linksPosted WHERE id NOT IN(SELECT id FROM ClicksMade);
SELECT t1.* FROM linksPosted AS t1 LEFT OUTER JOIN ClicksMade AS t2 ON t1.word = t2.word AND 1.user = t2.user WHERE t2.id IS NULL
ありがとう。