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

質問編集履歴

7

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

2017/10/22 08:02

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

title CHANGED
File without changes
body CHANGED
@@ -11,22 +11,6 @@
11
11
  ###発生している問題・エラーメッセージ
12
12
  必修科目を持つ講義に関して、今の自分のコードでは、3層以上あるときに最上位層の科目が複数表示されてしまいます。(例:COSC3320 /COSC1310 と COSC5234 /COSC1310/COSC3320は残して、COSC3380 /COSC3320を削除したいが、今はすべてが表示されている)。
13
13
 
14
- ###該当のソースコード
15
- select
16
- prq.COURSE_NUMBER
17
- ,sys_connect_by_path(prq.PREREQ ,'/')
18
- ,co.COURSE_NAME
19
- ,level + 1
20
- from course co join prereq prq on (co.course_number = prq.course_number)
21
- start with prq.course_number in (
22
- parent course
23
- select distinct prq2.course_number
24
- from PREREQ prq2
25
- where prq2.course_number is not null
26
- )
27
- connect by prior prq.course_number = prq.prereq
28
- ;
29
-
30
14
  ###試したこと
31
15
  最初のほうに試したことを忘れてしまいましたが、覚えている限り書きます。
32
16
  prior を消す。

6

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

2017/10/22 08:02

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

title CHANGED
File without changes
body CHANGED
@@ -13,22 +13,16 @@
13
13
 
14
14
  ###該当のソースコード
15
15
  select
16
- prq.COURSE_NUMBER as "Course"
16
+ prq.COURSE_NUMBER
17
- ,sys_connect_by_path(prq.PREREQ ,'/') as "Prerequisite(s)"
17
+ ,sys_connect_by_path(prq.PREREQ ,'/')
18
- ,co.COURSE_NAME as "Course Name"
18
+ ,co.COURSE_NAME
19
- ,level + 1 as "Level"
20
- from
21
- course co
19
+ ,level + 1
22
- join prereq prq on (co.course_number = prq.course_number)
20
+ from course co join prereq prq on (co.course_number = prq.course_number)
23
21
  start with prq.course_number in (
24
22
  parent course
25
- select distinct
26
- prq2.course_number
23
+ select distinct prq2.course_number
27
- from
28
- PREREQ prq2
24
+ from PREREQ prq2
29
- where 1=1
30
- -- condition by prq2, not co2
31
- and prq2.course_number is not null
25
+ where prq2.course_number is not null
32
26
  )
33
27
  connect by prior prq.course_number = prq.prereq
34
28
  ;

5

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

2017/10/22 07:41

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

title CHANGED
File without changes
body CHANGED
@@ -36,8 +36,7 @@
36
36
  ###試したこと
37
37
  最初のほうに試したことを忘れてしまいましたが、覚えている限り書きます。
38
38
  prior を消す。
39
- start with句を単純な条件で試してみる。 例えばstart with prq.course_number in ('COSC5234', 'COSC3320')で実行すると以下のように出ました(これもおかいです。。)
39
+ start with句を単純な条件で試してみる。 例えばstart with prq.course_number in ('COSC5234', 'COSC3320')で実行してみましたが、同じ症状が出ま
40
- ![イメージ説明](a59fe5a30d733cf915299fe75d9ff14c.png)
41
40
 
42
41
  ###補足情報(言語/FW/ツール等のバージョンなど)
43
42
  Oracle 12c を使ってOracle Developer上で動かしています。

4

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

2017/10/21 02:47

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

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

3

タイトル名を改善

2017/10/21 02:46

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

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

2

タイトルを変更

2017/10/19 08:38

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

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

1

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

2017/10/19 06:44

投稿

Ryuichi_Yamamot
Ryuichi_Yamamot

スコア11

title CHANGED
File without changes
body CHANGED
File without changes