问题:
您有一个包含多个维度数据的表,并且您想要在不预先知道维数的情况下动态创建交叉表(数据透视表)。
解决方案:
必须定义数据透视查询的列数在查询准备时。要实现动态交叉表,您有两个涉及编写应用程序代码的选项:
选项 1:查询不同值并构造动态 SQL
示例:
<code class="php">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中文网其他相关文章!