mysql - MySQL SELECT-query:在查询中使用 MIN()-function 时如何获得正确的 ID?
问题描述
我正在 Visual Studio 中编写 C# Windows 窗体应用程序,我正在尝试从购物清单中获取有关超市 2 和超市 3 中产品最低价格的数据。
我需要采取的第一步是进行正确的 SELECT 查询,从我的本地 MySQL 数据库返回此数据。
我的价格表中有以下列:
- 价格
- 条码
- 超市_id
我还有一张超市餐桌,其中包括 3 家超市:
- 超市 ID = 1 名称 = 超市 1
- 超市 ID = 2 名称 = 超市 2
- 超市 ID = 3 名称 = 超市 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以及特定杂货清单中产品的最低价格
解决方案
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
推荐阅读
- mysql - ERROR 1265 (01000): 列的数据被截断
- docker - 如何自动获取可用端口?
- sql - 在 SQL (GBQ) 中选择整数的一部分
- flutter - 颤振确定线性进度条在值更改后没有动画
- r - Tidymodels,所有模型失败;model.frame.default 中的错误和秩不足拟合的预测可能会产生误导
- python - Python Tkinter GUI 表单在数据库中搜索,但某些字段可以为空
- point-cloud-library - 如何使用描述符比较点云中的相似性?
- laravel - 在 Laravel 中登录后重定向错误
- java - Restarter 尚未初始化:如何根据我的 Spring Boot 版本制作下载的应用程序
- php - 使用 Laravel Alpine 和 Livewire 向现有项目添加身份验证