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

Comment créer des tableaux croisés dynamiques MySQL avec des colonnes dynamiques ?

Mary-Kate Olsen
Libérer: 2024-12-16 19:48:16
original
178 Les gens l'ont consulté

How to Create Dynamic MySQL Pivot Tables with Dynamic Columns?

Requêtes de tableau croisé dynamique MySQL dynamiques avec colonnes dynamiques

Dans ce scénario, les données de produit sont stockées dans deux tables : product et product_additional. L'objectif est de créer une requête MySQL dynamique qui peut s'adapter aux modifications de la table product_additional, permettant l'ajout de nouveaux noms de champs et valeurs de champs sans avoir besoin de modifier manuellement la requête.

La requête fournie récupère efficacement les données de les deux tableaux et les affiche sous forme de tableau, en remplissant dynamiquement les colonnes de taille, de hauteur et de couleur de la table product_additional. Cependant, cette requête devient statique si de nouveaux champs sont ajoutés dynamiquement.

Pour obtenir un véritable dynamisme, les instructions Prepared de MySQL peuvent être utilisées. Ces instructions permettent la construction de requêtes dynamiques au moment de l'exécution. Le code serait le suivant :

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(pa.fieldname = ''',
      fieldname,
      ''', pa.fieldvalue, NULL)) AS ',
      fieldname
    )
  ) INTO @sql
FROM product_additional;

SET @sql = CONCAT('SELECT p.id
                    , p.name
                    , p.description, ', @sql, ' 
                   FROM product p
                   LEFT JOIN product_additional AS pa 
                    ON p.id = pa.id
                   GROUP BY p.id, p.name, p.description');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Copier après la connexion

Ce code construit la requête dynamique basée sur les données de la table product_additional, en ajoutant dynamiquement les colonnes nécessaires à la chaîne de requête. La requête dynamique résultante est ensuite exécutée et les résultats sont affichés.

Considérations supplémentaires :

Il est important de noter que la fonction GROUP_CONCAT a une limite de longueur maximale de 1 024 caractères. . Si la requête nécessite plus de caractères, le paramètre group_concat_max_len peut être ajusté pour s'adapter.

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