2011-10-27 2 views
0

質問:私はCVSに以下の表にデータをエクスポートするにはどうすればよい

はdog_attributesのすべての属性は、主にMySQLを使用して、独自の列を持っているので、ファイルをエクセル?MySQLの - の列に行

NOTES:

  • 私は一度に一つのGROUP_IDとそのgroup_idのためのすべてのdog_attributesをエクスポートします。
  • グループごとに数千の犬と数百のgroup_elementsが存在する可能性があります。私は PHPループの代わりにほとんどのMySQLを使用して考えて 速度の方が良いでしょう。MySQLにはエクスポート機能が組み込まれているからです。
  • 私のサーバは、PHPとCodeigniter FrameworkでMySQLを実行しています。

例:

4つのテーブルがあります。

group_tbl - グループは管理者によって設定され、共通の要素を含むために使用されます。

+----+---------+ 
| id | var1 | 
+----+---------+ 
| 1 | data | 
| 2 | data | 
+----+---------+ 

group_elements_tblは - 管理者によって要素の設定が含まれています。これらはユーザーが入力するフォームフィールドです。

+----+----------+-----------+ 
| id | group_id | elmt_name | 
+----+----------+-----------+ 
| 1 | 1  | height | 
| 2 | 1  | color  | 
| 3 | 2  | breed  | 
+----+----------+-----------+ 

dogs_tbl - 各ユーザーが作成した犬が含まれています。 dog_attributes_tbl

+----+----------+---------+ 
| id | group_id | name | 
+----+----------+---------+ 
| 1 | 1  | Rover | 
| 2 | 1  | Buck | 
| 3 | 2  | Rex  | 
+----+----------+---------+ 

- 管理者によってgroups_elements_tblでカスタム要素の設定の値が含まれています。

+----+--------------------+------------+ 
| id | group_elements_id | attr_value | 
+----+--------------------+------------+ 
| 1 | 1     | 54 inches | 
| 2 | 2     | brown  | 
| 3 | 1     | 34 inches | 
| 3 | 2     | white  | 
| 4 | 3     | husky  | 
+----+---------+------------+ 

最終結果:グループ2(GROUP_ID = 2

+--------+----------+-----------+--------+ 
| dog_id | dog_name | height | color | 
+--------+----------+-----------+--------+ 
| 1  | Rover | 54 inches | brown | 
| 2  | Buck  | 34 inches | white | 
+--------+----------+-----------+--------+ 

最終Excelスプレッドシート:グループ1(GROUP_ID = 1)のための

最終Excelスプレッドシート):

+--------+----------+-----------+ 
| dog_id | dog_name | breed  | 
+--------+----------+-----------+ 
| 3  | Rex  | husky  | 
+--------+----------+-----------+ 

答えて

2

最も速い方法は、プログラミング方法でこれらのプロパティを処理することです.NOはSQLとなります。あなたは2番目の要求には、あなたが興味を持っているとforeachにマージ犬のためのすべてのプロパティをすべての犬をつかむ必要があります

など

+0

この度はお返事ありがとうございます。あなたが提供した答えに基づいて、私の質問は正しく述べられていないことがわかりました。私は質問を改訂しました。うまくいけば、これは今より意味をなさない。ご不明な点がございましたらお知らせください。 – zechdc

+0

あなたの編集は何も変わっていないと思います。 @hszに同意します。 – Fred

+0

@Fredだから、MySQLのステートメントを実行するためにいくつかの行を数回foreachループで実行する方が良いでしょう。私はいつも別の方法で言われてきましたが、本当に良い場合はそれでいいです。 – zechdc

0

私はフィールドを持つ一時テーブルを作成します。

group_id 
dog_id 
dog_name 
elmt_name 
attr_value 

この元のデータベースのフラットな表現です。 2つの重要な事柄:

1)このテーブルは、mysqlストアドプロシージャを使用して生成する必要があります。それ以外の場合は、何千もの犬がいる場合、それは非常に遅くなります。

2)このフラットテーブルは、レポート用の特別なキャッシュテーブルです。犬のデータがゆっくりと変更されると、犬のデータを変更するまで犬のデータを削除する必要はありません。

次に、簡単なクエリを使用して、Excelエクスポートを生成できます。インデックスを忘れないでください!