回答編集履歴

6

レイアウト変更

2016/08/13 23:17

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -126,6 +126,8 @@
126
126
 
127
127
  A'1 A'2
128
128
 
129
+
130
+
129
131
  ③A1、A2はA'1、A'2を含んでいる
130
132
 
131
133
  A |---------------|

5

文面ミス変更

2016/08/13 23:17

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
 
68
68
 
69
- 2つ目の着眼点はPHP上でのSQLの記載と、
69
+ 2つ目の着眼点はJava上でのSQLの記載と、
70
70
 
71
71
  SQLPlusで実行した**SQLの差分を比較**してみましょう。
72
72
 

4

追記

2016/08/13 16:35

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -39,3 +39,101 @@
39
39
  ちなみにこの条件により取得されたデータ件数が1以上は、
40
40
 
41
41
  重複ありとなります。(**isCheckOverlap**ではfalseを返すことになります)
42
+
43
+
44
+
45
+ ###追記
46
+
47
+ SQLPlusで想定通り動作するけど、
48
+
49
+ PHPで想定通りとならないケースというのは、
50
+
51
+
52
+
53
+ 0. バインドパラメタ(?に設定する値)が想定と異なる値を設定している
54
+
55
+ 0. SQLの記述方法に差異がある
56
+
57
+
58
+
59
+ 上記のどちらかとなるので、その観点でプログラムを確認してみて下さい。
60
+
61
+
62
+
63
+ 1つ目の着眼点は**setStringなど**で値を設定している箇所で、
64
+
65
+ デバッグ機能を利用し想定した値が変数に設定されているかの確認しましょう。
66
+
67
+
68
+
69
+ 2つ目の着眼点はPHP上でのSQLの記載と、
70
+
71
+ SQLPlusで実行した**SQLの差分を比較**してみましょう。
72
+
73
+ パラメタを「?」としている箇所以外で大きな差分があれば、
74
+
75
+ そこが実行結果が異なる要因となっている箇所と推測できます。
76
+
77
+
78
+
79
+ また重複条件の判定について文面だけだとわかり辛いので、
80
+
81
+ 追加でアドバイスをば。
82
+
83
+
84
+
85
+ こちらは質問者さんなりに重複条件を考えていらっしゃると思いますが、
86
+
87
+ どうしてもプログラミングのみ(頭内で考えるだけ)でわからない場合は、
88
+
89
+ 一度EXCELや紙などにどういったケースが重複となるかを書き出すと整理しやすいです。
90
+
91
+
92
+
93
+ 例えば以下のように書き出すと、
94
+
95
+ どのように条件を付ける必要があるか見えてきませんか。
96
+
97
+
98
+
99
+ ```
100
+
101
+ A.今回登録予定の予約
102
+
103
+ A'.登録済の予約
104
+
105
+
106
+
107
+ ①A1(開始日)はA'1とA'2に含まれる
108
+
109
+ A |----------|
110
+
111
+ A1 A2
112
+
113
+ A'|-----|
114
+
115
+ A'1 A'2
116
+
117
+
118
+
119
+ ②A2(終了日)はA'1とA'2に含まれる
120
+
121
+ A |----------|
122
+
123
+ A1 A2
124
+
125
+ A'|-----|
126
+
127
+ A'1 A'2
128
+
129
+ ③A1、A2はA'1、A'2を含んでいる
130
+
131
+ A |---------------|
132
+
133
+ A1 A2
134
+
135
+ A'|-----|
136
+
137
+ A'1 A'2
138
+
139
+ ```

3

追記2

2016/08/13 16:33

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -38,6 +38,4 @@
38
38
 
39
39
  ちなみにこの条件により取得されたデータ件数が1以上は、
40
40
 
41
- 重複ありとなります。(isOverLap)
41
+ 重複ありとなります。(**isCheckOverlap**ではfalseを返すことになります)
42
-
43
-

2

追記

2016/08/13 12:00

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -33,3 +33,11 @@
33
33
  OR (STARTDAY > fromYMD AND ENDDAY < toYMD) -- 別データの開始・終了日を含む
34
34
 
35
35
  ```
36
+
37
+
38
+
39
+ ちなみにこの条件により取得されたデータ件数が1以上は、
40
+
41
+ 重複ありとなります。(isOverLap)
42
+
43
+

1

誤字修正

2016/08/13 11:51

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -1,6 +1,8 @@
1
- 質問者さんのおっしゃる重複の定義が、予約したい期間内に別途予約された日付期間が含まれている状態を指すのでしたら、
1
+ 質問者さんのおっしゃる重複の定義が、
2
2
 
3
+ 予約したい期間内に別途予約された日付期間が含まれている状態を指すのでしたら、
4
+
3
- 以下のイメージでいけるかと思ます。
5
+ 以下の考え方でいけるかと思われます。
4
6
 
5
7
 
6
8
 
@@ -18,7 +20,7 @@
18
20
 
19
21
 
20
22
 
21
- これをSQLで正直に表すと下記のようなイメージになります。
23
+ これをSQLで正直に表すと下記イメージになります。
22
24
 
23
25
 
24
26