![](/img/trans.png)
[英]How to select a corresponding column in mysql for a MAX DATE grouped by DATE
[英]mySQL how to get last date visible in a COUNT grouped by another column and ordered by date
我有一個包含這些列的表:
日期
牌
訂單號
我需要顯示按品牌分組的報告,按日期降序排列,按 order_number 計數,顯示每個品牌最后一個訂單的最近日期。
我的代碼是這樣的:
<?php
$sql = "SELECT *, COUNT(*) FROM table GROUP BY brand order by date DESC;";
$resultg = mysqli_query($con, $sql);
while($row = mysqli_fetch_assoc($result)) {
$date = $row["date"];
$brand = $row["brand"];
echo "<table>";
echo "<tr>";
echo "<td class='timecell'>";
echo date('d-m H:i.s', strtotime($date));
echo "</td>";
echo "<td class='brandcell'>";
echo $brand;
echo "</td>";
echo "<td class='countcell'>";
echo $row['COUNT(*)'];
echo "</td>";
echo "</tr>";
echo "</table>";
}
?>
我得到的 output 是按日期降序排列的,它顯示了每個品牌的訂單數量,但每個組顯示的日期是該品牌的第一個訂單日期,並且列表中的訂單也是使用日期該品牌的第一個訂單,而我需要顯示該品牌的最后一個訂單的日期,並使用該品牌的最后一個訂單的日期降序排列列表。 必須如何編寫查詢才能獲得該結果?
如果我理解正確,也許將 MAX(date) 與 COUNT(*) 一起使用?
此查詢將顯示按日期排序的所有訂單以及您獲得的品牌訂單數量。
SELECT t1.*, count_b
FROM table1 t1
INNER JOIN (SELECT brand, COUNT(*) count_b FROM table1 GROUP BY brand) b ON t1.brand = b.brand
order by date DESC
找到了解決方案。
目標是按品牌對訂單進行分組,顯示該品牌的最后一個訂單日期,並使列表按每個品牌的最后一個訂單日期降序排列。
達到目標的 sql 語法是:
SELECT *, MAX(date), COUNT(*) FROM table GROUP BY brand order by MAX(date) DESC;
這會產生正確的結果,並且可以格式化如下:
<?php
$sql = "SELECT *, COUNT(*) FROM table GROUP BY brand order by date DESC;";
$resultg = mysqli_query($con, $sql);
while($row = mysqli_fetch_assoc($result)) {
$brand = $row["brand"];
echo "<table>";
echo "<tr>";
echo "<td class='timecell'>";
$row['MAX(date)'];
echo "</td>";
echo "<td class='brandcell'>";
echo $brand;
echo "</td>";
echo "<td class='countcell'>";
echo $row['COUNT(*)'];
echo "</td>";
echo "</tr>";
echo "</table>";
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.