这个问题在这里已有答案:
我试图通过SKU和日期从MySql数据库和组中找到所选产品的最低价格,并将它们输出到PHP。
我已经找到了其他的答案,但据我所知只能分组1,因为我首先需要将所有产品分组到特定日期,然后按sku分组并显示每个sku的最低价格
我在数据库中有1个表,其中包含
ID | sku | company | total_price | date
-------------------------------------------------
1 |tku1 | company_1 | 298.99 |2019/04/09
2 |tku1 | company_2 | 299.99 |2019/04/09
3 |tku1 | company_3 | 290.00 |2019/04/09
4 |stp1 | company_1 | 199.00 |2019/04/09
5 |stp1 | company_2 | 158.99 |2019/04/09
6 |stp1 | company_3 | 150.99 |2019/04/09
7 |upk1 | company_1 | 349.99 |2019/04/09
8 |upk1 | company_2 | 348.99 |2019/04/09
9 |upk1 | company_3 | 346.00 |2019/04/09
10 |dhu1 | company_1 | 520.99 |2019/04/09
11 |dhu1 | company_2 | 518.00 |2019/04/09
12 |dhu1 | company_2 | 515.99 |2019/04/09
13 |tku1 | company_1 | 298.99 |2019/04/08
14 |tku1 | company_2 | 299.99 |2019/04/08
15 |tku1 | company_3 | 290.00 |2019/04/08
16 |stp1 | company_1 | 199.00 |2019/04/08
17 |stp1 | company_2 | 158.99 |2019/04/08
18 |stp1 | company_3 | 150.99 |2019/04/08
19 |upk1 | company_1 | 349.99 |2019/04/08
20 |upk1 | company_2 | 348.99 |2019/04/08
21 |upk1 | company_3 | 346.00 |2019/04/08
22 |dhu1 | company_1 | 520.99 |2019/04/08
23 |dhu1 | company_2 | 518.00 |2019/04/08
24 |dhu1 | company_2 | 515.99 |2019/04/08
这是我到目前为止: -
$sql= ("SELECT *
FROM products
WHERE total_price = (
SELECT MIN(total_price)
from products
GROUP BY sku
ORDER BY date");
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row['sku'] . "</td>";
echo "<td>" . $row['total_price'] . "</td>";
echo "<td>" . $row['company'] . "</td>";
echo "<td>" . $row['date'] . "</td>";
echo "</tr>";
}
但这不起作用我的目标是在PHP中显示这样的东西
ID | SKU | COMPANY | TOTAL_PRICE | DATE
-------------------------------------------------
3 |tku1 | company_3 | 290.00 |2019/04/09
6 |stp1 | company_3 | 150.99 |2019/04/09
9 |upk1 | company_3 | 346.00 |2019/04/09
12 |dhu1 | company_2 | 515.99 |2019/04/09
编写此查询的最有效方法是使用JOIN
到每个total_price
的最小sku
值表:
SELECT p.*
FROM products p
JOIN (SELECT sku, MIN(total_price) AS total_price
FROM products
GROUP BY sku) mp ON mp.sku = p.sku AND mp.total_price = p.total_price
ORDER BY date
输出:
ID sku company total_price date
3 tku1 company_3 290 2019-04-09
6 stp1 company_3 150.99 2019-04-09
9 upk1 company_3 346 2019-04-09
12 dhu1 company_2 515.99 2019-04-09