0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

存在しないものにマークを付ける

Last updated at Posted at 2018-06-05

◆実現したい内容

あるテーブルにデータを登録します。そのテーブル情報は、複数の人に参照されるとします。
テーブル情報は、人単位に参照したかどうか印を付けます。

事例

例えば、グループ同報をイメージ。
あるグループには、複数人のメンバがいます。
メンバ向けのお知らせ情報はみんなに同時配信されます。

自分がまだチェックしていないお知らせは、未チェックの印が表示されます。

※グループのメンバは、増減がある可能性があるので、お知らせをチェックしたかどうかの情報は、御知らせ情報とは離して管理するようにします。

テーブル構成

■グループメンバテーブル [T_GROUP]

カラム 備考
MEMBER_CD varchar(3) 主キー
MEMBER_NM varchar(10) NOT NULL

■お知らせ情報テーブル [T_NOTICE]

カラム 備考
ID int 主キー
TITLE varchar(10) NOT NULL
BODY varchar(30) NOT NULL

■チェック済情報テーブル [T_CHECKED]

カラム 備考
ID int 主キー
MEMBER_CD varchar(3) 主キー

テストケース

例えば、こんな情報が登録されている場合

■グループメンバテーブル [T_GROUP]
メンバが3名のグループとします。

MEMBER_CD MEMBER_NM
M01 たろう
M02 はなこ
M03 トミー

■お知らせ情報テーブル [T_NOTICE]
お知らせが5件登録されています。

ID TITLE BODY
1 タイトル1 001のお知らせです。
2 タイトル2 002のお知らせです。
3 タイトル3 003のお知らせです。
4 タイトル4 004のお知らせです。
5 タイトル5 005のお知らせです。

■チェック済情報テーブル [T_CHECKED]
お知らせ情報に対する各メンバのお知らせチェック状況は次の通りです。

ID MEMBER_CD
1 M01
3 M01
3 M03

テスト検証

メンバ毎に届いているお知らせの状態を確認します。
SQLは、こちらです。

SELECT 
 N.ID AS 'お知らせID'
 , N.TITLE AS 'タイトル'
 , N.BODY AS '本文'
 , CASE 
    WHEN CC.MEMBER_CD IS NULL THEN '未'
	ELSE '' END AS 'チェック'
FROM 
 T_NOTICE N
LEFT OUTER JOIN
 (SELECT 
   C.ID AS ID
   ,C.MEMBER_CD AS MEMBER_CD
  FROM
   T_CHECKED C
  WHERE C.MEMBER_CD = 'M01') CC  -- ★M01の場合。対象のMEMBER_CDを設定して実行
ON CC.ID = N.ID;

■M01:たろう

お知らせID タイトル 本文 チェック
1 タイトル1 001のお知らせです。
2 タイトル2 002のお知らせです。
3 タイトル3 003のお知らせです。
4 タイトル4 004のお知らせです。
5 タイトル5 005のお知らせです。

■M02:はなこ

お知らせID タイトル 本文 チェック
1 タイトル1 001のお知らせです。
2 タイトル2 002のお知らせです。
3 タイトル3 003のお知らせです。
4 タイトル4 004のお知らせです。
5 タイトル5 005のお知らせです。

■M03:トミー

お知らせID タイトル 本文 チェック
1 タイトル1 001のお知らせです。
2 タイトル2 002のお知らせです。
3 タイトル3 003のお知らせです。
4 タイトル4 004のお知らせです。
5 タイトル5 005のお知らせです。

以上です。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?