回答編集履歴

5

余計な記述を削除

2016/02/28 14:23

投稿

kozuchi
kozuchi

スコア1193

test CHANGED
@@ -12,12 +12,6 @@
12
12
 
13
13
  ## 入力
14
14
 
15
- 前提条件
16
-
17
- 以下の二つのファイルがある
18
-
19
-
20
-
21
15
  ```file1.csv```
22
16
 
23
17
  ```

4

内容を全面的に更新

2016/02/28 14:23

投稿

kozuchi
kozuchi

スコア1193

test CHANGED
@@ -1,36 +1,28 @@
1
- とりあえず、まず、テーブル設計をするのが先決と思います。
1
+ 「情報追加・修正の依頼をする」に答えてくさったおかげで、
2
-
3
-
4
-
5
- どういうテーブルがあって、テーブル間の関係がどうなっているか
2
+
6
-
7
- (二つのCSVファイルが、それぞれ何に対応するファイルか)
8
-
9
- を決めましょう。
10
-
11
- それが決まっていないとどういう形でデータベースに入れたらいいか、誰にも答えられません。
12
-
13
-
14
-
15
- > id、氏名、年齢をカラムとしたテーブル1、
16
-
17
- > id、商品名、価格をカラムとしたテーブル2を作成し、
18
-
19
- > それぞれにcsvファイル1,2をインポートして、テーブルを結合させることで、
20
-
21
- > id,氏名、年齢、商品、価格をカラムとしたテーブルを作成することができますか?
3
+ ご質問の詳細がわかりました、それに合わせて回答も書換えさせていただきます
4
+
5
+
6
+
22
-
7
+ # 例
8
+
23
-
9
+ 以下のようなデータを例に説明します。
10
+
11
+
12
+
24
-
13
+ ## 入力
14
+
15
+ 前提条件
16
+
25
- 例えば、以下のようなファイル
17
+ 以下の二つのファイルがある
26
-
27
-
28
-
29
- ---
18
+
30
-
19
+
20
+
31
- ファイル1
21
+ ```file1.csv```
32
-
22
+
33
- ```
23
+ ```
24
+
25
+ ID,氏名,年齢
34
26
 
35
27
  1,山田太郎,16
36
28
 
@@ -40,28 +32,184 @@
40
32
 
41
33
 
42
34
 
43
- ---
44
-
45
- ファイル2
35
+ ```file2.csv```
46
-
36
+
47
- ```
37
+ ```
38
+
39
+ ID,商品名,価格
48
40
 
49
41
  1,バット,12000
50
42
 
51
- 2,ボール600
52
-
53
- ```
54
-
55
-
56
-
57
- 以下のようなテーブルにすだけなら簡単ですよ?
58
-
59
-
60
-
61
- ![テーブル](c1ddd6f6be050ebed628b3dfe8fc3087.png)
62
-
63
-
64
-
65
-
66
-
67
- しかし、こういうことをおっしゃっているのではないような気がするのですが。
43
+ 2,ボール,600![イメージ説明](6a827e5dbc480e9fc9510d95426b1874.png)
44
+
45
+ ```
46
+
47
+
48
+
49
+ ## 求め結果
50
+
51
+ 入力ファイルを元に、mySQL 上に以下のようなテーブルを作ること。
52
+
53
+ ![求める結果](57dd6849e802fc20f4ddfa9312212ef2.png)
54
+
55
+
56
+
57
+ # phpmyadmin による方法
58
+
59
+
60
+
61
+ 以下、phpmyadmin による実現方法です。
62
+
63
+
64
+
65
+ phpmyadmin 自体の操作はある程度ご存じであるという前提で以下書きます。
66
+
67
+ 「 3.取り込んだテーブルから新規テーブルを作る」までの操作は、
68
+
69
+ すでにやっていらっしゃるようなので、
70
+
71
+ どういう操作をしたのかがわかる程度の最低限のスナップショットを挙げておきます。
72
+
73
+
74
+
75
+ ## 1.対象データベースの作成
76
+
77
+ ここでは、「database1」という名前で作成します。
78
+
79
+ ![対象データベースの作成](2129c0ca0ccddae42db78c8389a50730.png)
80
+
81
+
82
+
83
+ 作成後です。
84
+
85
+ ![対象データベースの作成(作成後)](f973fac09ad3a501c6e232dba24d53e5.png)
86
+
87
+
88
+
89
+ ## 2.ファイルの取り込み
90
+
91
+ ### 2-2.file1.csv の取り込み
92
+
93
+ file1.csv を取り込みます。
94
+
95
+
96
+
97
+ ![file1.csv の取り込み](e5055098a673212f928a6dbe7b2bdd7e.png)
98
+
99
+
100
+
101
+ 取り込み後です。`` `TABLE 1` `` という名前でテーブルが作られています。
102
+
103
+ (`TABLE` と `1` の間にスペースが入っているので注意が必要です。)
104
+
105
+
106
+
107
+ ![file1.csv の取り込み後](f2b8efc2b45c53138ee42677a0465d6c.png)
108
+
109
+
110
+
111
+ ### 2-2.file2.csv の取り込み
112
+
113
+ 同様に file2.csv を取り込みます。
114
+
115
+
116
+
117
+ ![file2.csv の取り込み](492823dfeaf9ba45c4ab1d6d1590e39b.png)
118
+
119
+
120
+
121
+ 取り込み後です。`` `TABLE 2` `` という名前でテーブルが作られています。
122
+
123
+
124
+
125
+ ![file2.csv の取り込み後](809ce08d911d382565a7cc89f25fb096.png)
126
+
127
+
128
+
129
+ ## 3.取り込んだテーブルから新規テーブルを作る
130
+
131
+ 以上の操作でできた二つのテーブルについて、
132
+
133
+
134
+
135
+ > この作成していただいたテーブルからID1、ID2の行を付け足さないでIDの行だけで1行のレコードを作りたいです。 1、山田太郎、16、バット、12000\が1行になるようにできないでしょうか?
136
+
137
+
138
+
139
+ という形のテーブルを作るためには、例えば、以下のような SQL を実行します。
140
+
141
+
142
+
143
+ ```SQL
144
+
145
+ create table `TABLE 3` (
146
+
147
+ SELECT `TABLE 1`.ID,`TABLE 1`.氏名,`TABLE 1`.年齢,`TABLE 2`.商品名,`TABLE 2`.価格 FROM `TABLE 1` LEFT JOIN `TABLE 2` ON `TABLE 1`.ID=`TABLE 2`.ID
148
+
149
+ )
150
+
151
+ ```
152
+
153
+
154
+
155
+ 以下のように実行すると・・・
156
+
157
+ ![SQL実行直前](0a5e6b1314b1cecd6d2d3a23e2408a3a.png)
158
+
159
+
160
+
161
+ 以下のように `` `TABLE 3` `` が作られます。
162
+
163
+
164
+
165
+ ![SQL実行後](361b1a149a55786d0a21b6dfd879dd19.png)
166
+
167
+
168
+
169
+ `` `TABLE 3` `` の内容は以下のようになっています。
170
+
171
+ ![TABLE 3 内容](0bfcd2cbb472aa771d441b9024f763b4.png)
172
+
173
+
174
+
175
+ ## SQL説明
176
+
177
+ このSQL は大きく二つの操作を組わせて作られています、一つは、
178
+
179
+
180
+
181
+ ```SQL
182
+
183
+ SELECT `TABLE 1`.ID,`TABLE 1`.氏名,`TABLE 1`.年齢,`TABLE 2`.商品名,`TABLE 2`.価格 FROM `TABLE 1` LEFT JOIN `TABLE 2` ON `TABLE 1`.ID=`TABLE 2`.ID
184
+
185
+ ```
186
+
187
+
188
+
189
+ の部分で、```TABLE 1``` の一行について `ID` カラムが同じ値の `TABLE 2` の行を引き当て、
190
+
191
+ `TABLE 1` から、`ID`, `氏名`, `年齢` を
192
+
193
+ `TABLE 2` から、`ID`, `商品名`, `価格` を表示させています。
194
+
195
+ それを囲む形で記述してある
196
+
197
+
198
+
199
+ ```SQL
200
+
201
+ create table `TABLE 3` (
202
+
203
+ ~前述の部分~
204
+
205
+ )
206
+
207
+ ```
208
+
209
+
210
+
211
+ の部分は、前述の部分の結果を新しいテーブルとして登録しています。
212
+
213
+
214
+
215
+

3

表を画像に変更

2016/02/28 14:22

投稿

kozuchi
kozuchi

スコア1193

test CHANGED
@@ -58,17 +58,7 @@
58
58
 
59
59
 
60
60
 
61
- | id | id1 | 氏名 | 年齢| id2 |商品名 |価格 |
61
+ ![テーブル](c1ddd6f6be050ebed628b3dfe8fc3087.png)
62
-
63
- |---:|-------:|:-------|-----:|-----:|:------|------:|
64
-
65
- |  1| 1 |山田太郎 | 16| | | |
66
-
67
- |  2| 2 |里中智 | 16| | | |
68
-
69
- |  3| | | |1 | バット | 12000|
70
-
71
- |  4| | | |2 | ボール | 600|
72
62
 
73
63
 
74
64
 

2

IDを追加

2016/02/25 14:54

投稿

kozuchi
kozuchi

スコア1193

test CHANGED
@@ -58,17 +58,17 @@
58
58
 
59
59
 
60
60
 
61
- | id1 | 氏名 | 年齢| id2 |商品名 |価格 |
61
+ | id | id1 | 氏名 | 年齢| id2 |商品名 |価格 |
62
62
 
63
- |-------:|:-------|-----:|-----:|:------|------:|
63
+ |---:|-------:|:-------|-----:|-----:|:------|------:|
64
64
 
65
- | 1 |山田太郎 | 16| | | |
65
+ |  1| 1 |山田太郎 | 16| | | |
66
66
 
67
- | 2 |里中智 | 16| | | |
67
+ |  2| 2 |里中智 | 16| | | |
68
68
 
69
- | | | |1 | バット | 12000|
69
+ |  3| | | |1 | バット | 12000|
70
70
 
71
- | | | |2 | ボール | 600|
71
+ |  4| | | |2 | ボール | 600|
72
72
 
73
73
 
74
74
 

1

例を追加

2016/02/25 14:36

投稿

kozuchi
kozuchi

スコア1193

test CHANGED
@@ -9,3 +9,69 @@
9
9
  を決めましょう。
10
10
 
11
11
  それが決まっていないとどういう形でデータベースに入れたらいいか、誰にも答えられません。
12
+
13
+
14
+
15
+ > id、氏名、年齢をカラムとしたテーブル1、
16
+
17
+ > id、商品名、価格をカラムとしたテーブル2を作成し、
18
+
19
+ > それぞれにcsvファイル1,2をインポートして、テーブルを結合させることで、
20
+
21
+ > id,氏名、年齢、商品、価格をカラムとしたテーブルを作成することができますか?
22
+
23
+
24
+
25
+ 例えば、以下のようなファイルを
26
+
27
+
28
+
29
+ ---
30
+
31
+ ファイル1
32
+
33
+ ```
34
+
35
+ 1,山田太郎,16
36
+
37
+ 2,里中智,16
38
+
39
+ ```
40
+
41
+
42
+
43
+ ---
44
+
45
+ ファイル2
46
+
47
+ ```
48
+
49
+ 1,バット,12000
50
+
51
+ 2,ボール600
52
+
53
+ ```
54
+
55
+
56
+
57
+ 以下のようなテーブルにするだけなら簡単ですよ?
58
+
59
+
60
+
61
+ | id1 | 氏名 | 年齢| id2 |商品名 |価格 |
62
+
63
+ |-------:|:-------|-----:|-----:|:------|------:|
64
+
65
+ | 1 |山田太郎 | 16| | | |
66
+
67
+ | 2 |里中智 | 16| | | |
68
+
69
+ | | | |1 | バット | 12000|
70
+
71
+ | | | |2 | ボール | 600|
72
+
73
+
74
+
75
+
76
+
77
+ しかし、こういうことをおっしゃっているのではないような気がするのですが。