首页  >  文章  >  数据库  >  当列值未知时如何在 MySQL 中创建动态交叉表?

当列值未知时如何在 MySQL 中创建动态交叉表?

Susan Sarandon
Susan Sarandon原创
2024-10-28 08:36:29435浏览

How to Create a Dynamic Cross Tabulation in MySQL When Column Values are Unknown?

MySQL 中的动态交叉表

当处理特定列中具有未知数量值的表时(例如提供的示例中的“way”),创建MySQL 中的交叉表似乎是一个挑战。传统方法需要在查询时指定列名,这在动态情况下可能不可行。

解决方案

为了解决这一挑战,可以采用两种编程解决方案:

1。查询不同值并构造透视查询

此方法涉及获取具有不确定计数的列的不同值。使用此值列表,您可以构建动态数据透视查询并将必要的列附加到 SELECT 语句中。

<code class="sql">foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) {
  $way = (int) $row["way"];
  $way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way";
}
$pivotsql = "SELECT stop, " . join(", ", $way_array) . "FROM `MyTable` GROUP BY `stop`";</code>

2.逐行查询和透视后处理

此替代方法涉及按数据库中的结构逐行查询数据。您将收集数组中的数据,然后将其转换为列,然后再显示。

<code class="php">$stoparray = array();
foreach ($pdo->query("SELECT * FROM `MyTable`") as $row) {
  $stopkey = $row["stop"];
  if (!array_key_exists($stopkey, $stoparray)) {
    $stoparray[$stopkey] = array("stop"=>$stopkey);
  }
  $waykey = "way_" . $row["way"];
  $stoparray[$stopkey][$waykey] = $row["time"];
}</code>

两种方法都需要编码以适应列数未知的动态情况。方法的选择将取决于具体的数据操作要求和效率考虑。

以上是当列值未知时如何在 MySQL 中创建动态交叉表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn