1

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

ありがとう。

4

1 に答える 1

1

これを試して ::

Select lp.link
from 
linkposted lp
left join 
(Select cm.id from clickMade where userId= ?
) as tempComment
cm on (lp.id=tempComment.id)
where cm.id is null 

また

    Select lp.link
    from 
    linkposted lp
where id not in
    (
     Select cm.id from clickMade where userId= ?
    )
于 2013-01-03T14:05:52.513 に答える