다음과 같은 DB 구조가 있습니다.
모든 기능이있는 모든 자동차를 선택 feature.name
하고 열 이름과 cars_feature.value
값으로 결과를 반환 할 수 있기를 원합니다 . 지금은 모든 기능과 모든 값을 얻을 수 있지만 group_concat
.
내가 찾고있는 것은 다음 출력입니다.
car_id car_make color wheels doors
1 Ford blue alloy
2 Audi alloy 3
데이터 예 : SQLFiddle
다음은 여러 행을 하나의 행으로 결합 MySQL 에서 찾은 수정 된 버전의 코드입니다 .
SET @sql = NULL;
SELECT GROUP_CONCAT(DISTINCT CONCAT(
'MAX(CASE WHEN `name` = ''',
`name`,
''' THEN value END) AS `',
`name`, '`'
)
) INTO @sql
FROM (SELECT name,
value
FROM features, car_feature
WHERE features.id = car_feature.feature_id) AS car_features_feature;
SET @sql = CONCAT('SELECT car_feature.car_id AS car_id,
cars.make AS car_make,
',
@sql,
'
FROM car_feature
LEFT JOIN cars ON car_feature.car_id = cars.id
LEFT JOIN features ON car_feature.feature_id = features.id
GROUP BY car_id;');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
학습 경험에 감사드립니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다