以下のような、学校のクラスの生徒を保持しているテーブルと、履歴を保持するテーブルがあるとします
■現クラステーブル:
今現在のクラスの生徒の情報を保持しているテーブル
■旧クラステーブル:
クラスに生徒が増えると登録されるテーブルで、
履歴を管理する番号と生徒の番号を保持しているテーブル
現クラステーブル
クラスID | 生徒連番 | 生徒名 |
---|---|---|
1000 | 1 | 田中一郎 |
1000 | 2 | 佐藤二郎 |
1000 | 3 | 鈴木三郎 |
旧クラステーブル
クラスID | クラス履歴番号 | 生徒連番 | 生徒名 |
---|---|---|---|
1000 | 1 | 1 | 田中一郎 |
1000 | 2 | 1 | 田中一郎 |
1000 | 2 | 2 | 佐藤二郎 |
上記のようなデータが存在した時、
以下の結果を返すSQLを作成したいです。
(現在のクラスの生徒と、ある時点のクラスの生徒の情報を併せて取得したい)
旧クラスID | 旧クラス履歴番号 | 旧生徒連番 | 旧生徒名 | 現クラスID | 現生徒連番 | 現生徒名 |
---|---|---|---|---|---|---|
1000 | 2 | 1 | 田中一郎 | 1000 | 1 | 田中一郎 |
1000 | 2 | 2 | 佐藤二郎 | 1000 | 2 | 佐藤二郎 |
1000 | 3 | 鈴木三郎 |
取得できた同じレコードの「旧生徒連番と旧生徒名を連結したもの」と、「新生徒連番と新生徒名を連結したもの」を比較し、
違っていれば、追加/変更があったと検知したいです。
比較自体はSQLでやる必要はないので、データを取得できるところまで実現できれば問題ありません。
以下のSQLを作成してみましたが、意図した結果にはなりませんでした。
ご助言いただける方、コメントをお願い致します。
SQL
1SELECT 2 A.クラスID, 3 A.クラス履歴連番, 4 A.生徒連番, 5 A.生徒名, 6 B.クラスID, 7 B.生徒連番, 8 B.生徒名 9FROM 10 旧クラステーブル A, 11 現クラステーブル B 12WHERE 13 A.クラスID = B.クラスID and 14 B.クラス履歴番号 = '2'
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/08 13:44
2018/11/09 01:46
2018/11/09 01:55