当处理特定列中具有未知数量值的表时(如提供的示例中的“way”),创建MySQL 中的交叉表似乎是一个挑战。传统的方法要求您在查询时指定列名,这在动态情况下可能不可行。
为了应对这一挑战,可以采用两种编程解决方案:
此方法涉及获取具有不确定计数的列的不同值。使用此值列表,您可以构建动态数据透视查询并将必要的列附加到 SELECT 语句中。
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`";
此替代方法涉及按数据库中的结构逐行查询数据。您将收集数组中的数据,然后将其旋转到列中,然后再显示它。
$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"];
}
这两种方法都需要编码以适应列数未知的动态情况。方法的选择将取决于具体的数据操作要求和效率考虑。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3