gpt4 book ai didi

php - 仅选择 min(column1) 和 min(column2) 所在的行

转载 作者:行者123 更新时间:2023-11-29 07:41:54 28 4
gpt4 key购买 nike

我有两张 table 。第一个表显示 id_product 和 Product_price_value。下面我将向您展示一个示例(在我的数据库中有很多行)

表:主产品

ID_product: product_price_value: 
119, Product1

表:值(value)产品

product_price_value: width_from: width_to: height_from: height_to: price: 
Product1 , 10, 20, 5, 15, 100
Product1 , 10, 20, 10, 30, 200
Product1 , 20, 30, 5, 45, 300
Product1 , 30, 30, 20, 30, 400

正如您所见,一种产品可以有多个维度。我想获得宽度和高度组合最低的价格。在我的示例中,它应该是第一行(宽度从 -> 10,高度从 -> 5)。

我使用了以下代码:

$sql = "SELECT value_product.price FROM value_product INNER JOIN main_product
ON (main_product.product_price_value = value_product.product_price_value
AND (
value_product.width_from = (SELECT MIN(value_product.width_from) FROM value_product)
AND value_product.height_from = (SELECT MIN(value_product.height_from) FROM value_product)
)
);";

通过这种方式,我想我可以获得每种产品的最低宽度/高度的价格。但我得到的唯一结果是当 width_from 或 height_from 包含值 0 时。如果宽度或高度大于 0,则它不会返回任何内容。

我的查询中是否做错了什么?

有没有办法获得“width_from”和“height_from”列最低的价格?

谢谢

最佳答案

如果您只想要一种产品的这样的价格,您可以简单地排序和限制:

SELECT   price
FROM value_product
WHERE product_price_value = ?
ORDER BY width_from + height_from
LIMIT 1

否则你就在寻找 group-wise minimum ,可以通过将表连接回其自身的分组版本来获得:

SELECT   v.product_price_value,
v.price
FROM value_product v
JOIN (
SELECT product_price_value,
MIN(width_from + height_from) min_dimension
FROM value_product
GROUP BY product_price_value
) t
ON t.product_price_value = v.product_price_value
AND t.min_dimension = v.width_from + v.height_from

在这两种情况下,我都假设只有一条记录具有最小尺寸。如果有多个这样的记录,第一个查询将不确定地选择一个;第二个查询将列出所有这些。如果这不是您想要的行为,您必须澄清您希望发生什么。

关于php - 仅选择 min(column1) 和 min(column2) 所在的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28855292/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com