0

2 つのテーブルがあり、最初のテーブルにはreportsデータviewedids
が保存され、2 つ目のテーブルにはデータを表示したユーザー ID が保存されます。

閲覧 ID:

+-------+------+
|  uid  | rid  |
+-------+------+
|   2   |   5  |
+-------+------+

各 ( uid, rid) はuidが閲覧したことを意味しますrid

*テーブルから選択して、現在のユーザーのreportsビュー ステート (0または) をテーブルに追加したいと考えています。1(JOIN ステートメント)
これを行うにはどうすればよいですか?

4

1 に答える 1

1

LEFT JOIN を使用できます。

SELECT reports.*, viewedids.uid IS NOT NULL as view_state
FROM
  reports LEFT JOIN viewedids
  ON reports.id = viewedids.rid
     AND viewedids.uid = @current_user

これにより、すべてのレポートが返され、viewedids ON でレポート テーブルに参加しようとしますreports.id = viewedids.rid AND viewedids.uid = @current_user。結合が成功した場合、viewedids.uid は null ではなく、viewedids.uid IS NOT NULL1 と評価されます。それ以外の場合は 0 と評価されます。

ここでフィドルを参照してください。

于 2013-06-24T22:42:05.827 に答える