Я немного переживаю, когда mysqli и PHP используют динамическую сводную таблицу, так как я могу получить статическую сводную таблицу на PHP, но не динамическую.
Я построил динамический сводный свод в MySQL Workbench, и он отлично выглядит и отлично работает.
Борьба заключается в PHP, так как я пытался запросить multi или оператор, оба не удаются, так как я понимаю, что multi-query не рекомендуется, но я застрял на данный момент.
как видите код, который я написал для 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');