回答編集履歴

2

内容の修正。

2017/11/28 03:21

投稿

red13
red13

スコア79

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 1.サブテーブルの件数を取得する。
5
+ 1.サブテーブルの最大件数を取得する。
6
6
 
7
7
  SELECT COUNT(id) id_count FROM sub_table GROUP BY id ORDER BY id_count DESC LIMIT 1
8
8
 

1

内容の修正。

2017/11/28 03:21

投稿

red13
red13

スコア79

test CHANGED
@@ -1,15 +1,57 @@
1
- 自己解決ではありませんし、まだ解決ていません
1
+ 検討、実験た結果以下のような処理になりまし
2
-
3
- 「INFTO OUTFILE」を使用せずに、別の方法で試すことになりました。
4
2
 
5
3
 
6
4
 
7
- ・結合して複数行レコデータ1行レコードで出力するようなSQLを作成する
5
+ 1.サブテブル件数取得する。
8
6
 
9
- ・上記の結果を一時的なテーブルに格納する。
10
-
11
- ・一時的なテーブルに対して「mysql "SELECT * FROM 一時的なテーブル" > /test/test.txt」で出力する。
7
+ SELECT COUNT(id) id_count FROM sub_table GROUP BY id ORDER BY id_count DESC LIMIT 1
12
8
 
13
9
 
14
10
 
11
+ 2.「1.」で取得した件数でループしてサブテーブル部分のSQLを作成する。
12
+
13
+ SELECT
14
+
15
+ main.*,
16
+
17
+ // ここをPHPのループで作成
18
+
19
+ (SELECT id sub_id FROM sub_table sub WHERE sub.main_id = main.id LIMIT 0, 1) sub_id1,
20
+
21
+ (SELECT sub_note sub_note FROM sub_table sub WHERE sub.main_id = main.id LIMIT 0, 1) sub_note1,
22
+
23
+ (SELECT id sub_id FROM sub_table sub WHERE sub.main_id = main.id LIMIT 1, 1) sub_id2,
24
+
25
+ (SELECT sub_note sub_note FROM sub_table sub WHERE sub.main_id = main.id LIMIT 1, 1) sub_note2,
26
+
27
+ ・・・
28
+
29
+ FROM
30
+
31
+ main_table main
32
+
33
+
34
+
35
+ 3.「2.」を登録するテーブルを作成する。
36
+
37
+ CREATE TEMP_TABLE (カラム);
38
+
39
+
40
+
41
+ 4.「2.」をINSERTする。
42
+
43
+ INSERT INTO TEMP_TABLE 「2.」のSELECT;
44
+
45
+
46
+
15
- 上記方法の結果は、この質問か、別質問記載するつもりです
47
+ 5.PHPexec()リダイレクト出力する。
48
+
49
+ mysql -u root -ptest 'SELECT * FROM TEMP_TABLE' > test/test.csv
50
+
51
+
52
+
53
+
54
+
55
+ 6.「3.」のテーブルを削除する。
56
+
57
+ DROP TABLE TEMP_TABLE;