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

回答編集履歴

2

内容の修正。

2017/11/28 03:21

投稿

red13
red13

スコア79

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  検討、実験した結果、以下のような処理になりました。
2
2
 
3
- 1.サブテーブルの件数を取得する。
3
+ 1.サブテーブルの最大件数を取得する。
4
4
  SELECT COUNT(id) id_count FROM sub_table GROUP BY id ORDER BY id_count DESC LIMIT 1
5
5
 
6
6
  2.「1.」で取得した件数でループしてサブテーブル部分のSQLを作成する。

1

内容の修正。

2017/11/28 03:21

投稿

red13
red13

スコア79

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