首页 > 解决方案 > MySQL SELECT-query:在查询中使用 MIN()-function 时如何获得正确的 ID?

问题描述

我正在 Visual Studio 中编写 C# Windows 窗体应用程序,我正在尝试从购物清单中获取有关超市 2 和超市 3 中产品最低价格的数据。

我需要采取的第一步是进行正确的 SELECT 查询,从我的本地 MySQL 数据库返回此数据。

我的价格表中有以下列:

我还有一张超市餐桌,其中包括 3 家超市:

一种产品对超市表中的每个超市都有一个价格

我正在使用以下查询让数据库返回我想要的数据:

SELECT pro.name, MIN(p.price) AS 'Lowest Price', p.supermarket_id
FROM (
    SELECT i.product_barcode
    FROM shopping_list_items i
    WHERE i.shopping_list_id = 95
) s
JOIN prices p ON s.product_barcode = p.barcode
JOIN products pro ON s.product_barcode = pro.barcode
GROUP BY s.product_barcode;

上述查询返回产品名称、产品最低价格和supermarket_id。但是,supermarket_id 始终为 1,尽管产品的价格不是在超市 1 中而是在超市 3 中。

所以我现在的问题是我的查询必须如何才能获得超市ID以及特定杂货清单中产品的最低价格

标签: mysqlsqlselectsubquerymin

解决方案


SELECT p.name, pr.lowest_price, p.supermarket_id,s.supermarket_name from 
products p INNER JOIN
(SELECT barcode,supermarket_id,MIN(price) as AS 'lowest_price'
FROM prices
GROUP BY barcode,supermarket
)pr on pr.barcode = p.barcode
INNER JOIN supermarkets s on pr.supermarket_id = s.supermarket_id

推荐阅读