【发布时间】:2018-05-09 15:56:40
【问题描述】:
在动态数据透视表上使用 mysqli 和 PHP 时我有点挣扎,因为我能够在 PHP 中获得静态数据透视表,但不是动态数据透视表。
我在 MySQL Workbench 中构建了一个动态 Pivot,它看起来不错,而且运行完美。
斗争是 PHP,因为我试图查询多或语句,两者都失败了,因为我理解不推荐多查询,但我现在卡住了。
你可以看到我为 PHP 编写的代码
function get_all_records() {
$conn = getdb();
$Sql = "SET @sql = NULL;";
$Sql .= "SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(suo.date = ''', date, ''', suo.units_ordered, 0)) AS ', CONCAT('`',date,'`') ) ) INTO @sql FROM tbl_sku_units_order;";
$Sql .= "SET @sql = CONCAT('SELECT ls.sku AS list_sku,
COALESCE(MIN(suo.sku), 'NotSold' ) AS sold_sku,
', @sql, ' ,
COALESCE( SUM(suo.units_ordered), 0 ) AS total_sold
FROM tbl_list_sku AS ls
LEFT JOIN tbl_sku_units_order AS suo
ON suo.sku = ls.sku
GROUP BY ls.sku
ORDER BY total_sold DESC');";
$Sql .="PREPARE stmt FROM @sql;";
$Sql .="EXECUTE stmt;";
$Sql .="DEALLOCATE PREPARE stmt;";
$result = mysqli_multi_query($conn, $Sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>
<td>" . $row['list_sku'] . "</td>
<td>" . $row['today_sold'] . "</td></tr>";
}
// echo "<tr> <td><a href = '' class = 'btn btn-danger' id = 'status_btn' data-loading-text = 'Changing Status..'>Export</a></td></tr>";
echo "</tbody></table></div>";
} else {
echo "<P class = 'text-center'>You have no recent QTY Daily Inventory</P>";
}
}
它根本不起作用。 我也喜欢将 Workbench 工具导出到 PHP 代码,但缺少大部分重要功能
$query = "SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(suo.date = ''', date, ''', suo.units_ordered, 0)) AS ', CONCAT(\"`\",date,\"`\") ) ) INTO @sql FROM tbl_sku_units_order";
if ($stmt = $conn->prepare($query)) {
$stmt->execute();
$stmt->bind_result($date);
while ($stmt->fetch()) {
printf("%s\n", $date);
}
$stmt->close();
因为这个缺失的功能是
SET @sql = CONCAT('SELECT ls.sku AS list_sku,
COALESCE( MIN(suo.sku), "Not Sold" ) AS sold_sku,
', @sql, ' ,
COALESCE( SUM(suo.units_ordered), 0 ) AS total_sold
FROM tbl_list_sku AS ls
LEFT JOIN tbl_sku_units_order AS suo
ON suo.sku = ls.sku
GROUP BY ls.sku
ORDER BY total_sold DESC');
【问题讨论】:
-
用于构建和执行数据透视的脚本:mysql.rjweb.org/doc.php/pivot
-
感谢这份文件,我知道它来晚了,但它值得阅读。
标签: php mysql mysqli pivot-table