MySQL 피벗 테이블 쿼리: 데이터 분석을 위해 동적 열 사용
<p>다음 표를 사용하여 제품 데이터를 저장하고 있습니다. </p>
<pre class="brush:php;toolbar:false;">mysql> SELECT * FROM product;
+---------------+---------------+-------+
| 아이디 | 설명 |
+---------------+---------------+-------+
| 1 | 제품1 | 5 |
| 2 | 제품2 | 5 |
+---------------+---------------+-------+
mysql> SELECT * FROM product_additional;
+------+----------------+
| ID | 필드값 |
+------+----------------+
1 |사이즈 |
1 | 높이 |
2 |사이즈 |
2 |
2 | 색상 |
+-----------------+----------------+</pre>
<p>두 테이블 모두에서 레코드를 선택하려면 다음 쿼리를 사용하세요. </p>
<pre class="brush:php;toolbar:false;">mysql>
p.id
,p.이름
, 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)) as `color`
제품 p에서
LEFT JOIN product_additional AS pa ON p.id = pa.id
GROUP BY p.id
+---------------+---------------+---------+-------- -+---------+
| 아이디 | 이름 | 크기 |
+---------------+---------------+---------+-------- -+---------+
| 1 | 제품1 | S |
| 2 | 제품2 | L |
+---------------+---------------+---------+-------- -+---------+</pre>
<p>모든 것이 잘 작동합니다 :) </p>
<p>"추가" 테이블을 동적으로 채우고 있으므로 쿼리도 동적이면 좋을 것입니다. 이렇게 하면 새 필드 이름과 필드 값을 입력할 때마다 쿼리를 변경할 필요가 없습니다. </p>