回答編集履歴
5
余計な記述を削除
answer
CHANGED
@@ -5,9 +5,6 @@
|
|
5
5
|
以下のようなデータを例に説明します。
|
6
6
|
|
7
7
|
## 入力
|
8
|
-
前提条件
|
9
|
-
以下の二つのファイルがある
|
10
|
-
|
11
8
|
```file1.csv```
|
12
9
|
```
|
13
10
|
ID,氏名,年齢
|
4
内容を全面的に更新
answer
CHANGED
@@ -1,34 +1,107 @@
|
|
1
|
-
|
1
|
+
「情報の追加・修正の依頼をする」に答えてくださったおかげで、
|
2
|
+
ご質問の詳細がわかりましたので、それに合わせて回答も書き換えさせていただきます。
|
2
3
|
|
3
|
-
|
4
|
+
# 例
|
4
|
-
|
5
|
+
以下のようなデータを例に説明します。
|
5
|
-
を決めましょう。
|
6
|
-
それが決まっていないとどういう形でデータベースに入れたらいいか、誰にも答えられません。
|
7
6
|
|
7
|
+
## 入力
|
8
|
+
前提条件
|
8
|
-
|
9
|
+
以下の二つのファイルがある
|
9
|
-
> id、商品名、価格をカラムとしたテーブル2を作成し、
|
10
|
-
> それぞれにcsvファイル1,2をインポートして、テーブルを結合させることで、
|
11
|
-
> id,氏名、年齢、商品、価格をカラムとしたテーブルを作成することができますか?
|
12
10
|
|
13
|
-
|
11
|
+
```file1.csv```
|
14
|
-
|
15
|
-
---
|
16
|
-
ファイル1
|
17
12
|
```
|
13
|
+
ID,氏名,年齢
|
18
14
|
1,山田太郎,16
|
19
15
|
2,里中智,16
|
20
16
|
```
|
21
17
|
|
22
|
-
---
|
23
|
-
|
18
|
+
```file2.csv```
|
24
19
|
```
|
20
|
+
ID,商品名,価格
|
25
21
|
1,バット,12000
|
26
|
-
2,ボール600
|
22
|
+
2,ボール,600
|
27
23
|
```
|
28
24
|
|
25
|
+
## 求める結果
|
29
|
-
以下のようなテーブル
|
26
|
+
入力ファイルを元に、mySQL 上に以下のようなテーブルを作ること。
|
27
|
+

|
30
28
|
|
31
|
-
|
29
|
+
# phpmyadmin による方法
|
32
30
|
|
31
|
+
以下、phpmyadmin による実現方法です。
|
33
32
|
|
33
|
+
phpmyadmin 自体の操作はある程度ご存じであるという前提で以下書きます。
|
34
|
+
「 3.取り込んだテーブルから新規テーブルを作る」までの操作は、
|
35
|
+
すでにやっていらっしゃるようなので、
|
36
|
+
どういう操作をしたのかがわかる程度の最低限のスナップショットを挙げておきます。
|
37
|
+
|
38
|
+
## 1.対象データベースの作成
|
39
|
+
ここでは、「database1」という名前で作成します。
|
40
|
+

|
41
|
+
|
42
|
+
作成後です。
|
43
|
+

|
44
|
+
|
45
|
+
## 2.ファイルの取り込み
|
46
|
+
### 2-2.file1.csv の取り込み
|
47
|
+
file1.csv を取り込みます。
|
48
|
+
|
49
|
+

|
50
|
+
|
51
|
+
取り込み後です。`` `TABLE 1` `` という名前でテーブルが作られています。
|
52
|
+
(`TABLE` と `1` の間にスペースが入っているので注意が必要です。)
|
53
|
+
|
54
|
+

|
55
|
+
|
56
|
+
### 2-2.file2.csv の取り込み
|
57
|
+
同様に file2.csv を取り込みます。
|
58
|
+
|
59
|
+

|
60
|
+
|
61
|
+
取り込み後です。`` `TABLE 2` `` という名前でテーブルが作られています。
|
62
|
+
|
63
|
+

|
64
|
+
|
65
|
+
## 3.取り込んだテーブルから新規テーブルを作る
|
66
|
+
以上の操作でできた二つのテーブルについて、
|
67
|
+
|
68
|
+
> この作成していただいたテーブルからID1、ID2の行を付け足さないでIDの行だけで1行のレコードを作りたいです。 1、山田太郎、16、バット、12000\が1行になるようにできないでしょうか?
|
69
|
+
|
70
|
+
という形のテーブルを作るためには、例えば、以下のような SQL を実行します。
|
71
|
+
|
72
|
+
```SQL
|
73
|
+
create table `TABLE 3` (
|
74
|
+
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
|
75
|
+
)
|
76
|
+
```
|
77
|
+
|
78
|
+
以下のように実行すると・・・
|
79
|
+

|
80
|
+
|
81
|
+
以下のように `` `TABLE 3` `` が作られます。
|
82
|
+
|
83
|
+

|
84
|
+
|
34
|
-
|
85
|
+
`` `TABLE 3` `` の内容は以下のようになっています。
|
86
|
+

|
87
|
+
|
88
|
+
## SQL説明
|
89
|
+
このSQL は大きく二つの操作を組わせて作られています、一つは、
|
90
|
+
|
91
|
+
```SQL
|
92
|
+
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
|
93
|
+
```
|
94
|
+
|
95
|
+
の部分で、```TABLE 1``` の一行について `ID` カラムが同じ値の `TABLE 2` の行を引き当て、
|
96
|
+
`TABLE 1` から、`ID`, `氏名`, `年齢` を
|
97
|
+
`TABLE 2` から、`ID`, `商品名`, `価格` を表示させています。
|
98
|
+
それを囲む形で記述してある
|
99
|
+
|
100
|
+
```SQL
|
101
|
+
create table `TABLE 3` (
|
102
|
+
~前述の部分~
|
103
|
+
)
|
104
|
+
```
|
105
|
+
|
106
|
+
の部分は、前述の部分の結果を新しいテーブルとして登録しています。
|
107
|
+
|
3
表を画像に変更
answer
CHANGED
@@ -28,12 +28,7 @@
|
|
28
28
|
|
29
29
|
以下のようなテーブルにするだけなら簡単ですよ?
|
30
30
|
|
31
|
-
|
31
|
+

|
32
|
-
|---:|-------:|:-------|-----:|-----:|:------|------:|
|
33
|
-
| 1| 1 |山田太郎 | 16| | | |
|
34
|
-
| 2| 2 |里中智 | 16| | | |
|
35
|
-
| 3| | | |1 | バット | 12000|
|
36
|
-
| 4| | | |2 | ボール | 600|
|
37
32
|
|
38
33
|
|
39
34
|
しかし、こういうことをおっしゃっているのではないような気がするのですが。
|
2
IDを追加
answer
CHANGED
@@ -28,12 +28,12 @@
|
|
28
28
|
|
29
29
|
以下のようなテーブルにするだけなら簡単ですよ?
|
30
30
|
|
31
|
-
| id1 | 氏名 | 年齢| id2 |商品名 |価格 |
|
31
|
+
| id | id1 | 氏名 | 年齢| id2 |商品名 |価格 |
|
32
|
-
|-------:|:-------|-----:|-----:|:------|------:|
|
32
|
+
|---:|-------:|:-------|-----:|-----:|:------|------:|
|
33
|
-
| 1 |山田太郎 | 16| | | |
|
33
|
+
| 1| 1 |山田太郎 | 16| | | |
|
34
|
-
| 2 |里中智 | 16| | | |
|
34
|
+
| 2| 2 |里中智 | 16| | | |
|
35
|
-
| | | |1 | バット | 12000|
|
35
|
+
| 3| | | |1 | バット | 12000|
|
36
|
-
| | | |2 | ボール | 600|
|
36
|
+
| 4| | | |2 | ボール | 600|
|
37
37
|
|
38
38
|
|
39
39
|
しかし、こういうことをおっしゃっているのではないような気がするのですが。
|
1
例を追加
answer
CHANGED
@@ -3,4 +3,37 @@
|
|
3
3
|
どういうテーブルがあって、テーブル間の関係がどうなっているか
|
4
4
|
(二つのCSVファイルが、それぞれ何に対応するファイルか)
|
5
5
|
を決めましょう。
|
6
|
-
それが決まっていないとどういう形でデータベースに入れたらいいか、誰にも答えられません。
|
6
|
+
それが決まっていないとどういう形でデータベースに入れたらいいか、誰にも答えられません。
|
7
|
+
|
8
|
+
> id、氏名、年齢をカラムとしたテーブル1、
|
9
|
+
> id、商品名、価格をカラムとしたテーブル2を作成し、
|
10
|
+
> それぞれにcsvファイル1,2をインポートして、テーブルを結合させることで、
|
11
|
+
> id,氏名、年齢、商品、価格をカラムとしたテーブルを作成することができますか?
|
12
|
+
|
13
|
+
例えば、以下のようなファイルを
|
14
|
+
|
15
|
+
---
|
16
|
+
ファイル1
|
17
|
+
```
|
18
|
+
1,山田太郎,16
|
19
|
+
2,里中智,16
|
20
|
+
```
|
21
|
+
|
22
|
+
---
|
23
|
+
ファイル2
|
24
|
+
```
|
25
|
+
1,バット,12000
|
26
|
+
2,ボール600
|
27
|
+
```
|
28
|
+
|
29
|
+
以下のようなテーブルにするだけなら簡単ですよ?
|
30
|
+
|
31
|
+
| id1 | 氏名 | 年齢| id2 |商品名 |価格 |
|
32
|
+
|-------:|:-------|-----:|-----:|:------|------:|
|
33
|
+
| 1 |山田太郎 | 16| | | |
|
34
|
+
| 2 |里中智 | 16| | | |
|
35
|
+
| | | |1 | バット | 12000|
|
36
|
+
| | | |2 | ボール | 600|
|
37
|
+
|
38
|
+
|
39
|
+
しかし、こういうことをおっしゃっているのではないような気がするのですが。
|