Maison > base de données > tutoriel mysql > Comment créer des tableaux croisés dynamiques dans MySQL avec des ID utilisateur entiers ?

Comment créer des tableaux croisés dynamiques dans MySQL avec des ID utilisateur entiers ?

Mary-Kate Olsen
Libérer: 2024-11-14 16:13:02
original
402 Les gens l'ont consulté

How to Create Dynamic Pivot Tables in MySQL with Integer User IDs?

Tableaux croisés dynamiques dans MySQL avec colonnes dynamiques

Cette question aborde le défi de la création de tableaux croisés dynamiques MySQL avec des colonnes dynamiques. Bien que la solution fonctionne efficacement lorsque user_id est défini comme une chaîne, elle échoue lorsqu'elle rencontre des valeurs entières.

L'extrait de code fourni illustre la tentative initiale de création du tableau croisé dynamique. Cependant, pour résoudre le problème lié aux valeurs entières user_id, les corrections résident dans la façon dont les noms de colonnes sont construits dans la requête SQL dynamique.

Le code original :

...
GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS ',
      user_id
    )
  ) INTO @sql
Copier après la connexion

int user_id les valeurs sont à l'origine du problème puisqu'elles sont utilisées directement comme noms de colonnes. Pour résoudre ce problème, ces valeurs doivent être enveloppées dans des backticks (`). Le code corrigé ajuste ceci :

...
GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS `',
      user_id, '`'
    )
  ) INTO @sql
Copier après la connexion

La requête finale corrigé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;
Copier après la connexion

Avec ces ajustements, le tableau croisé dynamique peut désormais être généré avec succès même lorsqu'il s'agit de valeurs user_id entières.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal