Tableaux croisés dynamiques dans MySQL
Lorsque vous essayez de générer un tableau croisé dynamique avec des colonnes dynamiques, il est crucial de vous assurer que les noms des colonnes sont manipulé correctement. Dans la situation fournie, le user_id est un entier, ce qui peut causer des problèmes s'il n'est pas formaté correctement.
Pour résoudre ce problème, il est nécessaire d'envelopper les valeurs user_id entre des guillemets (`) pour les spécifier comme noms de colonnes et éviter leur interprétation erronée en tant que valeurs numériques. Voici la requête modifiée :
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS `', user_id, '`' ) ) INTO @sql FROM measure2; SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' FROM measure2 GROUP BY inspection_date'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
Cette modification garantit que les valeurs user_id sont traitées comme des noms de colonnes, ce qui donne un tableau croisé dynamique avec des colonnes dynamiques représentant chaque user_id unique et leurs scores correspondants.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!