質問編集履歴

1

表を用いて質問したが、表が物凄く見づらいため。

2018/07/21 07:50

投稿

reprepjqu
reprepjqu

スコア15

test CHANGED
File without changes
test CHANGED
@@ -4,13 +4,13 @@
4
4
 
5
5
  MySQL(バージョン5.7)で以下のような3つのテーブルを用意しました。
6
6
 
7
- - main_table(無限にデータがあることを想定)
7
+ - table1(無限にデータがあることを想定)
8
8
 
9
9
 
10
10
 
11
- |main_id|main_name|
11
+ |id|name|
12
12
 
13
- |:--|:--:|
13
+ |:--:|:--:|
14
14
 
15
15
  |1|メイン1|
16
16
 
@@ -32,31 +32,19 @@
32
32
 
33
33
 
34
34
 
35
- - sub_table(このテーブルとmain_tableのmain_idが紐づき、無限にデータがあることを想定)
35
+ - table2(このテーブルとtable1のidが紐づき、無限にデータがあることを想定)
36
36
 
37
37
 
38
38
 
39
- |main_id|sub_id|
39
+ |id|subid|
40
40
 
41
- |:--|:--:|
41
+ |:--:|:--:|
42
42
 
43
43
  |1|1|
44
44
 
45
45
  |1|2|
46
46
 
47
- |1|4|
48
-
49
- |1|7|
50
-
51
- |1|10|
52
-
53
47
  |2|3|
54
-
55
- |2|7|
56
-
57
- |2|8|
58
-
59
- |2|10|
60
48
 
61
49
  |…|…|
62
50
 
@@ -64,49 +52,35 @@
64
52
 
65
53
 
66
54
 
67
- - master_table(このテーブルとsub_tableのsub_idが紐づき、データは最大10個を想定)
55
+ - table3(このテーブルとtable2のsubidが紐づき、データは最大3個を想定)
68
56
 
69
57
 
70
58
 
71
- |sub_id|master_name|
59
+ |subid|subname|
72
60
 
73
- |:--|:--:|
61
+ |:--:|:--:|
74
62
 
75
- |1|マスター1|
63
+ |1|サブ1|
76
64
 
77
- |2|マスター2|
65
+ |2|サブ2|
78
66
 
79
- |3|マスター3|
67
+ |3|サブ3|
80
-
81
- |4|マスター4|
82
-
83
- |5|マスター5|
84
-
85
- |6|マスター6|
86
-
87
- |7|マスター7|
88
-
89
- |8|マスター8|
90
-
91
- |9|マスター9|
92
-
93
- |10|マスター10|
94
-
95
-
96
68
 
97
69
 
98
70
 
99
71
  このときに外部結合をうまく利用して以下のような結果が出力されるselect文を作成したいです。
100
72
 
101
- |main_id|main_name|sub_id=1のmaster_name|main_idに対してsub_tableのsub_id=1が存在するか|sub_id=2のmaster_name|main_idに対してsub_tableのsub_id=2が存在するか|sub_id=3のmaster_name|main_idに対してsub_tableのsub_id=3が存在するか|sub_id=4のmaster_name|main_idに対してsub_tableのsub_id=4が存在するか|sub_id=5のmaster_name|main_idに対してsub_tableのsub_id=5が存在するか|sub_id=6のmaster_name|main_idに対してsub_tableのsub_id=6が存在するか|sub_id=7のmaster_name|main_idに対してsub_tableのsub_id=7が存在するか|sub_id=8のmaster_name|main_idに対してsub_tableのsub_id=8が存在するか|sub_id=9のmaster_name|main_idに対してsub_tableのsub_id=9が存在するか|sub_id=10のmaster_name|main_idに対してsub_tableのsub_id=10が存在するか|
102
73
 
103
- |:--|:--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|--:|
104
74
 
105
- |1|メイン1|マスター1|存在する|マスター2|存在する|マスター3|存在ない|マスター4|存在する|マスター5|存在しない|マスター6|存在しない|マスター7|存在する|マスター8|存在しない|マスター9|存在しない|マスター10|存在する|
75
+ |id|name|subid=1のsubname|idに対してtable2のsubid=1存在する|subid=2のsubname|idに対してtable2のsubid=2が存在する|subid=3のsubname|idに対てtable2のsubid=3が存在する|
106
76
 
107
- |2|メイン1|マスター1|存在しない|マスター2|存在しない|マスター3|存在する|マスター4|存在しない|マスター5|存在しない|マスター6|存在しない|マスター7|存在する|マスター8|存在する|マスター9|存在しない|マスター10|存在する
77
+ |:--:|--|--|--|--|--|--|--|
108
78
 
79
+ |1|メイン1|サブ1|存在する|サブ2|存在する|サブ3|存在しない|
80
+
81
+ |2|メイン2|サブ1|存在しない|サブ2|存在しない|サブ3|存在する|
82
+
109
- |…|…|…|…|…|…|…|…|…|…|…|…|…|…|…|…|…|…|…|…|…|…|
83
+ |…|…|…|…|…|…|…|…|…|…|…|…|
110
84
 
111
85
 
112
86