teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

推敲

2020/11/11 06:59

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  元にするテーブルを「異動」テーブルとすると、
5
5
  select 異動基準.*, 異動前.異動部署
6
6
  from (
7
- select 社員番号, 発令日
7
+ select *
8
8
  ,(select max(発令日)
9
9
  from 異動 as 異動前
10
10
  where 異動前.社員番号=異動.社員番号

3

推敲

2020/11/11 06:59

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  元にするテーブルを「異動」テーブルとすると、以下のようなSQLで取り出す事が出来ます。
3
3
  ```SQL
4
4
  元にするテーブルを「異動」テーブルとすると、
5
- select 異動.*, 異動前.異動部署
5
+ select 異動基準.*, 異動前.異動部署
6
6
  from (
7
7
  select 社員番号, 発令日
8
8
  ,(select max(発令日)
@@ -11,9 +11,9 @@
11
11
  and 異動前.発令日<異動.発令日
12
12
  ) as 異動前発令日
13
13
  from 異動
14
- ) 異動
14
+ ) as 異動基準
15
15
  left join 異動 as 異動前
16
- on 異動.社員番号=異動前.社員番号 and 異動.異動前発令日=異動前.発令日
16
+ on 異動基準.社員番号=異動前.社員番号 and 異動基準.異動前発令日=異動前.発令日
17
17
 
18
18
  ```
19
19
  時間が掛かるようなら、SQL中にある異動前発令日をテーブル作成クエリーで作成するとか、インデックスの見直しを行って下さい。

2

冗長だったので訂正

2020/11/11 06:57

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,8 +1,9 @@
1
1
  自己結合する訳なので、それぞれの情報を繋ぐ情報を作り出す必要があります。
2
2
  元にするテーブルを「異動」テーブルとすると、以下のようなSQLで取り出す事が出来ます。
3
3
  ```SQL
4
+ 元にするテーブルを「異動」テーブルとすると、
4
- select 異動.*, 異動前.発令日, 異動前.異動部署
5
+ select 異動.*, 異動前.異動部署
5
- from 異動 left join (
6
+ from (
6
7
  select 社員番号, 発令日
7
8
  ,(select max(発令日)
8
9
  from 異動 as 異動前
@@ -10,9 +11,9 @@
10
11
  and 異動前.発令日<異動.発令日
11
12
  ) as 異動前発令日
12
13
  from 異動
13
- ) as 異動前情報
14
+ ) 異動
14
- on 異動.社員番号=異動前情報.社員番号 and 異動.発令日=異動前情報.発令日
15
15
  left join 異動 as 異動前
16
- on 異動前情報.社員番号=異動前.社員番号 and 異動前情報.異動前発令日=異動前.発令日
16
+ on 異動.社員番号=異動前.社員番号 and 異動.異動前発令日=異動前.発令日
17
+
17
18
  ```
18
- 時間が掛かるようなら、SQL中にある異動前情報をテーブル作成クエリーで作成するとか、インデックスの見直しを行って下さい。
19
+ 時間が掛かるようなら、SQL中にある異動前発令日をテーブル作成クエリーで作成するとか、インデックスの見直しを行って下さい。

1

推敲

2020/11/11 06:55

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -15,4 +15,4 @@
15
15
  left join 異動 as 異動前
16
16
  on 異動前情報.社員番号=異動前.社員番号 and 異動前情報.異動前発令日=異動前.発令日
17
17
  ```
18
- 時間が掛かるようなら、SQL中にある異動前情報をテーブル作成クエリーで作成するおういするとか、インデックスの見直しを行って下さい。
18
+ 時間が掛かるようなら、SQL中にある異動前情報をテーブル作成クエリーで作成するとか、インデックスの見直しを行って下さい。