MySQL ピボット テーブル クエリ: データ分析に動的列を使用する
<p>商品データを保存するために次のテーブルを使用しています。</p>
<pre class="brush:php;toolbar:false;">mysql> SELECT * FROM product;
--------------- --------------- ------
| ID | 名前 | 説明 | ストック |
--------------- --------------- ------
| 1 | 製品 1 | 最初の製品 | 5 |
| 2 | 製品 2 | 2 番目の製品 | 5 |
--------------- --------------- ------
mysql> SELECT * FROM product_Additional;
--------------------------------------
| ID | フィールド名 | フィールド値 |
--------------------------------------
| 1 | サイズ | S |
| 1 | 身長 | 103 |
| 2 | サイズ | L |
| 2 | 高さ | 13 |
| 2 | カラー | ブラック |
------------------ ------------ </pre>
<p>次のクエリを使用して両方のテーブルからレコードを選択します: </p>
<pre class="brush:php;toolbar:false;">mysql> SELECT
p.id
,p.name
、p.説明
,MAX(IF(pa.fieldname = 'size', pa.fieldvalue, NULL)) as `size`
,MAX(IF(pa.fieldname = 'height', pa.fieldvalue, NULL)) as `height`
,MAX(IF(pa.fieldname = 'color', pa.fieldvalue, NULL)) `color` として
製品pから
LEFT JOIN product_Additional AS pa ON p.id = pa.id
p.id によるグループ化
--------------- --------------- -------- ---------- -- ------
| ID | 名前 | 説明 | サイズ | 高さ | 色 |
--------------- --------------- -------- ---------- -- ------
| 1 | 製品 1 | 最初の製品 | S | 103 | null |
| 2 | product2 | 2 番目の製品 | L | 13 | ブラック |
--------------- --------------- -------- ---------- -- - ----- </pre>
<p>すべてうまくいきます :) </p>
<p>「追加」テーブルに動的にデータを入力しているので、クエリも動的であれば良いでしょう。こうすることで、新しいフィールド名とフィールド値を入力するたびにクエリを変更する必要がなくなります。 </p>