PHPを使用してデータベースのデータからCSVテーブルを構築したいと考えています。私は子供の得点を保持するプログラミングのアプリです。私の最初のテーブルには、子供だけを定義していますPHPを使用して3つのMySQLテーブルからCSVテーブルを効率的に構築する
┏━━━━┳━━━━━━┓
┃ ID ┃ name ┃
┡━━━━╇━━━━━━┩
│ 1 │ John │
│ 2 │ Lucy │
│ 3 │ Zara │
└────┴──────┘
第二には、子どもたちがポイント
┏━━━━┳━━━━━━━━━━━━┓
┃ ID ┃ date ┃
┡━━━━╇━━━━━━━━━━━━┩
│ 1 │ 2016-12-31 │
│ 2 │ 2017-01-07 │
│ 3 │ 2017-01-14 │
│ 4 │ 2017-01-21 │
└────┴────────────┘
を得ることができるイベントを、定義し、三つのeventID
でイベントにたchildIDに子を持ってどのように多くのポイントを教えて┏━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓
┃ ID ┃ eventID ┃ childID ┃ points ┃
┡━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩
│ 1 │ 1 │ 1 │ 21 │
│ 2 │ 1 │ 2 │ 43 │
│ 3 │ 1 │ 3 │ 4 │
│ 4 │ 2 │ 1 │ 8 │
│ 5 │ 2 │ 2 │ 15 │
│ 6 │ 2 │ 3 │ 13 │
│ 7 │ 3 │ 1 │ 34 │
│ 8 │ 3 │ 2 │ 40 │
│ 9 │ 3 │ 3 │ 20 │
│ 10 │ 4 │ 1 │ 3 │
│ 11 │ 4 │ 2 │ 7 │
│ 12 │ 4 │ 3 │ 9 │
└────┴─────────┴─────────┴────────┘
Cの子イベントとEイベントがあるので、テーブルポイントにはC * Eの行があるとします。また<行することができ
event;John;Lucy;Zara;⋯
2016-12-31; 21; 43; 4;
2017-01-07; 8; 15; 13;
2017-01-14; 34; 40; 20;
2017-01-21; 3; 7; 9;
⋮ ⋱
- スワップ> COLを、私は子供たちよりも多くのイベントをしました:今、私はこのようなテーブルを構築するための最も効率的な方法を見つけたいです。
しかし、データベースにC回のEクエリを作成することについては気になりません。私はPHPで長いと醜いクエリを生成しようとしましたが、基本的にC回Eサブクエリを作成しました。私はまた、どのようにEのクエリだけでそれを構築するアイデアがありますが、それは1つでは可能ではありませんか?
「JOIN」クエリとテーブルのピボットについて、2つのことを読む必要があります。これはかなり基本的なSQLです。 –
@ O.Jonesそして、1つのクエリでのみ行うことは可能でしょうか?子供の名前を列ヘッダーにする方法がわからないからです。 –
あなたは1つのクエリでそれを行うことができますが、SQL内のすべてのテーブルをピボットする場合は複雑になります。私は、 'join'クエリを通してデータを選択し、それをPHPで必要なフォーマットに解析することをお勧めします。完了したら 'fputcsv()'のようなものを使ってCSV文書を作成することができます。 –