質問編集履歴

7

プライバシーの観点から、元のソースコードを削除

2017/10/22 08:02

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

test CHANGED
File without changes
test CHANGED
@@ -24,38 +24,6 @@
24
24
 
25
25
 
26
26
 
27
- ###該当のソースコード
28
-
29
- select
30
-
31
- prq.COURSE_NUMBER
32
-
33
- ,sys_connect_by_path(prq.PREREQ ,'/')
34
-
35
- ,co.COURSE_NAME
36
-
37
- ,level + 1
38
-
39
- from course co join prereq prq on (co.course_number = prq.course_number)
40
-
41
- start with prq.course_number in (
42
-
43
- parent course
44
-
45
- select distinct prq2.course_number
46
-
47
- from PREREQ prq2
48
-
49
- where prq2.course_number is not null
50
-
51
- )
52
-
53
- connect by prior prq.course_number = prq.prereq
54
-
55
- ;
56
-
57
-
58
-
59
27
  ###試したこと
60
28
 
61
29
  最初のほうに試したことを忘れてしまいましたが、覚えている限り書きます。

6

プライバシーのため一部コードを削除

2017/10/22 08:02

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

test CHANGED
File without changes
test CHANGED
@@ -28,37 +28,25 @@
28
28
 
29
29
  select
30
30
 
31
- prq.COURSE_NUMBER as "Course"
31
+ prq.COURSE_NUMBER
32
32
 
33
- ,sys_connect_by_path(prq.PREREQ ,'/') as "Prerequisite(s)"
33
+ ,sys_connect_by_path(prq.PREREQ ,'/')
34
34
 
35
- ,co.COURSE_NAME as "Course Name"
35
+ ,co.COURSE_NAME
36
36
 
37
- ,level + 1 as "Level"
37
+ ,level + 1
38
38
 
39
- from
40
-
41
- course co
42
-
43
- join prereq prq on (co.course_number = prq.course_number)
39
+ from course co join prereq prq on (co.course_number = prq.course_number)
44
40
 
45
41
  start with prq.course_number in (
46
42
 
47
43
  parent course
48
44
 
49
- select distinct
45
+ select distinct prq2.course_number
50
46
 
51
- prq2.course_number
47
+ from PREREQ prq2
52
48
 
53
- from
54
-
55
- PREREQ prq2
56
-
57
- where 1=1
58
-
59
- -- condition by prq2, not co2
60
-
61
- and prq2.course_number is not null
49
+ where prq2.course_number is not null
62
50
 
63
51
  )
64
52
 

5

前回の編集で削除しそびれた箇所を削除

2017/10/22 07:41

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

test CHANGED
File without changes
test CHANGED
@@ -74,9 +74,7 @@
74
74
 
75
75
  prior を消す。
76
76
 
77
- start with句を単純な条件で試してみる。 例えばstart with prq.course_number in ('COSC5234', 'COSC3320')で実行すると以下のように出ました(これもおかしいです。。)
77
+ start with句を単純な条件で試してみる。 例えばstart with prq.course_number in ('COSC5234', 'COSC3320')で実行してみましたが、同じ症状が出ました。
78
-
79
- ![イメージ説明](a59fe5a30d733cf915299fe75d9ff14c.png)
80
78
 
81
79
 
82
80
 

4

プライバシーのため、一部問題の詳細を削除(エッセンスは残す)

2017/10/21 02:47

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

test CHANGED
File without changes
test CHANGED
@@ -1,34 +1,26 @@
1
1
  ###前提・実現したいこと
2
2
 
3
- 以下の二つのテーブルがあります。
3
+ 以下の二つのカラムを持つテーブルがあります。
4
4
 
5
5
  Course:大学の講義のコードと講義名を持つ
6
6
 
7
- ![イメジ説明](2a0130c25336b34ccceebcb946a6a77e.png)
7
+ 科目コド、コース名
8
8
 
9
+
9
10
 
11
+ Prereq:必修科目(ある講義を受ける前に取らないといけない講義)を持つ講義と、その必修科目を表すコードを持つ。(ツリー型)
10
12
 
11
- Prereq:必修科目(ある講義を受ける前に取らないといけない講義)を持つ講義とその必修科目を表すコードを持つ。
13
+  科目コード、必修科目コード
12
-
13
- ![イメージ説明](a286d5e8a2bb49166e03c8455091f3d3.png)
14
14
 
15
15
 
16
16
 
17
17
  Oracle SQLで階層問い合わせ(Start with, Connect by prior)を使うことで、必修科目を持つ講義に関しては下記のように、必修科目を持たない講義に関してはPrerequisite(s)に"-"ハイフンを表示し、それらを結合した結果を表示したいと思っています。Prerequisites(2)では、最初に親(一番最初に受けないといけない科目)が来るようにする必要があります。
18
18
 
19
- ![![イメージ説明](8edc5168b26035fe7bbd41620fd685f0.png)]
20
-
21
19
 
22
20
 
23
21
  ###発生している問題・エラーメッセージ
24
22
 
25
- 必修科目を持つ講義に関して、今の自分のコードでは以下のように表示されてしまいます。
26
-
27
- ![イメージ説明](11d30d6d3132c4a23950ddd467668026.png)
28
-
29
-
30
-
31
- 黄色くハイライトされいる行(3階層以上あるときの中間層のデータ)だけを表示させないようにす(例:COSC3320 /COSC1310 と COSC5234 /COSC1310/COSC3320は残して、COSC3380 /COSC3320を削除したい)。
23
+ 必修科目を持つ講義に関し、今の自分のコードでは、3層以上あるときに最上位層の科目が複数表示されて(例:COSC3320 /COSC1310 と COSC5234 /COSC1310/COSC3320は残して、COSC3380 /COSC3320を削除したいが、今はすべてが表示されている)。
32
24
 
33
25
 
34
26
 
@@ -46,15 +38,13 @@
46
38
 
47
39
  from
48
40
 
49
- eb.course co
41
+ course co
50
42
 
51
- join eb.prereq prq on (co.course_number = prq.course_number)
43
+ join prereq prq on (co.course_number = prq.course_number)
52
-
53
- --designate the origin (the top) course numbers of the hierarchy
54
44
 
55
45
  start with prq.course_number in (
56
46
 
57
- -- take the course_number having no prerequisite courses. These are the highest parent course
47
+ parent course
58
48
 
59
49
  select distinct
60
50
 
@@ -62,7 +52,7 @@
62
52
 
63
53
  from
64
54
 
65
- EB.PREREQ prq2
55
+ PREREQ prq2
66
56
 
67
57
  where 1=1
68
58
 
@@ -71,8 +61,6 @@
71
61
  and prq2.course_number is not null
72
62
 
73
63
  )
74
-
75
- --designate the parent-child relationship. Note the parent (presequisite) course comes first,
76
64
 
77
65
  connect by prior prq.course_number = prq.prereq
78
66
 

3

タイトル名を改善

2017/10/21 02:46

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

test CHANGED
@@ -1 +1 @@
1
- Oracleの階層問い合わせ:3層以上あるときの最上位層情報を持つ行の重複を解消したい。
1
+ OracleSQLの階層問い合わせ:3層以上あるときの最上位層情報を持つ行の重複を解消したい。
test CHANGED
File without changes

2

タイトルを変更

2017/10/19 08:38

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

test CHANGED
@@ -1 +1 @@
1
- Oracleの階層問い合わせ:3層以上あるときのカラムの重複を解消したい。
1
+ Oracleの階層問い合わせ:3層以上あるときの最上位層情報を持つ行の重複を解消したい。
test CHANGED
File without changes

1

初心者アイコンを付けた。

2017/10/19 06:44

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

test CHANGED
File without changes
test CHANGED
File without changes