Maison > base de données > tutoriel mysql > le corps du texte

Comment créer un tableau croisé dynamique dans MySQL avec des ID utilisateur entiers ?

DDD
Libérer: 2024-11-12 22:59:02
original
338 Les gens l'ont consulté

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

Tableau croisé dynamique dans MySQL

Lorsque vous travaillez avec une base de données, il est souvent utile de créer des tableaux croisés dynamiques pour résumer les données sur plusieurs colonnes. Cependant, lorsque les noms de colonnes sont dynamiques, cela peut présenter un défi. Cet article explique comment créer un tableau croisé dynamique dans MySQL, en particulier lorsque les ID utilisateur sont des entiers.

Dans l'exemple fourni par l'utilisateur, la requête a échoué lorsque l'ID utilisateur était un entier, mais a bien fonctionné lorsque c'était une chaîne. Le problème est survenu parce que les valeurs étaient utilisées directement comme noms de colonnes. Pour résoudre ce problème, il est nécessaire d'envelopper les valeurs entre des guillemets (`) pour créer des noms de colonnes valides.

Par exemple, au lieu de :

max(case when user_id = 1 then score end) as 1
Copier après la connexion

La syntaxe corrigée serait :

max(case when user_id = 1 then score end) as `1`
Copier après la connexion

De plus, lors de la sélection dynamique des colonnes, les backticks doivent également être inclus. La requête corrigée ressemblerait à :

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

En effectuant ces ajustements, le tableau croisé dynamique peut être généré avec succès, même lorsque les ID utilisateur sont des entiers.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal