열을 행을 가져 오는 mySQL 쿼리를 만들려고 해요, 내가 가장 가까운 결과를 얻을 수 있지만 아직 필요한 것은 아니며 이미 그것에 많은 시간을 보냈다 알아낼 수 없습니다. 내가 뭘 놓쳤는 지.동적으로 열을 MySQL로
|id|CPU1 |CPU2 |CPU3 |
|10|Intel(R) Xeon(R) CPU E5-2407 0 @ 2.20GHz |NULL |NULL |
|11|NULL |Intel(R) Xeon(R) CPU E5530 @ 2.40GHz |Intel(R) Xeon(R) CPU E5530 @ 2.40GHz|
내가 달성해야 할 결과는 다음과 같습니다 :
SET SESSION group_concat_max_len = 1000000;
SET @sql = NULL;
SET @rank=0;
SELECT
GROUP_CONCAT(
CONCAT(
'MAX(CASE WHEN cpus.hardware_id= ''',
cpus.hardware_id,
''' THEN cpus.type END) AS CPU',@rank:[email protected]+1
)
)INTO @sql
FROM
hardware
LEFT JOIN cpus ON hardware.id = cpus.hardware_id;
SET @sql=CONCAT('SELECT hardware.id, ',@sql,' FROM
hardware
JOIN cpus ON hardware.id = cpus.hardware_id GROUP BY hardware.id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
이 쿼리의 결과는 내가 여러 CPU를 가질 수 있기 때문에
|id|CPU1 |CPU2 |
|10|Intel(R) Xeon(R) CPU E5-2407 0 @ 2.20GHz |NULL |
|11|Intel(R) Xeon(R) CPU E5530 @ 2.40GHz |Intel(R) Xeon(R) CPU E5530 @ 2.40GHz |
쿼리 동적 할 필요가 각 하드웨어에 대해
이에 어떤 도움이 정말 감사합니다. 미리 감사드립니다.
많은 행을 CPU로 가질 수 있기 때문에 동적이 필요합니다. 각 하드웨어 장치에 따라 다릅니다. 이 샘플 데이터의 경우 최대 CPU는 2이지만 더 많은 CPU가있는 다른 하드웨어가 있으면 쿼리에서 모두 반환해야합니다. – vandyk