"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como criar dinamicamente as tabelas de tabuleiros cruzados no MySQL?

Como criar dinamicamente as tabelas de tabuleiros cruzados no MySQL?

Postado em 2025-03-22
Navegar:564

How to Dynamically Create Cross-Tabulated Tables in MySQL?

MySQL Dynamic Cross Tab

Problem:

You have a table containing data with multiple dimensions, and you want to create a cross-tabulated table (pivot table) dynamically without knowing the number of dimensions Upfront.

solução:

O número de colunas para uma consulta pivot deve ser definido no tempo de preparação da consulta. Para alcançar a tabulação cruzada dinâmica, você tem duas opções que envolvem a redação do código do aplicativo:

Opção 1: Query valores distintos e construa sql dinâmico

  1. consulta para valores distintos na dimensão que você quer para pivt (e.g. " Representando o tempo máximo para cada valor de dimensão distinto. ($ PDO-> Query ("Selecione Distinct` Way` de `MyTable`") como $ line) { $ way = (int) $ row ["way"]; $ way_array [] = "max (if (` way` = $ way, `time`)) como way_ $ way"; } $ pivotsql = "Selecione Stop". ingressar (",", $ way_array). "De` MyTable` Group por `parado"; key.
  2. preencha a matriz com subarrays contendo o valor da segunda dimensão (por exemplo, "Way") como chaves e valores de tempo como valores.
  3. A matriz resultante se parecerá com os dados de um pivot query. foreach ($ PDO-> Query ("Selecione * de` myTable` ") como $ row) { $ stopKey = $ line ["Stop"]; if (! Array_Key_Exists ($ StopKey, $ StopArray)) { $ stopArray [$ stopKey] = array ("stop" = & gt; $ stopKey); } $ waykey = "way_". $ row ["Way"]; $ stopArray [$ stopKey] [$ waykey] = $ row ["time"]; }
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3