MySQL 피벗 테이블 쿼리: 데이터 분석을 위해 동적 열 사용
P粉101708623
P粉101708623 2023-08-22 11:54:19
0
2
594
<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>
P粉101708623
P粉101708623

모든 응답(2)
P粉046387133

이를 수행하는 방법은 허용된 답변과 약간 다릅니다. 이 접근 방식은 기본적으로 1024자 제한이 있는 GROUP_CONCAT 사용을 방지하며 제한을 변경하지 않는 한 필드가 많으면 작동하지 않습니다.

으아악

데모를 보려면 여기를 클릭하세요

P粉768045522

MySQL에서 이를 동적으로 수행하는 유일한 방법은 준비된 문을 사용하는 것입니다. 여기에 대한 좋은 기사가 있습니다:

동적 피벗 테이블(행을 열로 변환)

귀하의 코드는 다음과 같습니다:

으아아아

보기 데모

참고: GROUP_CONCAT 함수의 문자 제한은 1024자입니다. 매개변수 group_concat_max_len

을 참조하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿