回答編集履歴
6
レイアウト変更
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
文面ミス変更
test
CHANGED
@@ -66,7 +66,7 @@
|
|
66
66
|
|
67
67
|
|
68
68
|
|
69
|
-
2つ目の着眼点は
|
69
|
+
2つ目の着眼点はJava上でのSQLの記載と、
|
70
70
|
|
71
71
|
SQLPlusで実行した**SQLの差分を比較**してみましょう。
|
72
72
|
|
4
追記
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
test
CHANGED
@@ -38,6 +38,4 @@
|
|
38
38
|
|
39
39
|
ちなみにこの条件により取得されたデータ件数が1以上は、
|
40
40
|
|
41
|
-
重複ありとなります。(isOver
|
41
|
+
重複ありとなります。(**isCheckOverlap**ではfalseを返すことになります)
|
42
|
-
|
43
|
-
|
2
追記
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
誤字修正
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
|
|