Php 仅选择包含最小值(第1列)和最小值(第2列)的行

Php 仅选择包含最小值(第1列)和最小值(第2列)的行,php,mysql,min,Php,Mysql,Min,我有两张桌子。第一个表显示id_产品和产品_价格_值。下面我将向您展示我的数据库中有许多行的一个示例 表:主要产品 ID_product: product_price_value: 119, Product1 表:产品价值 product_price_value: width_from: width_to: height_from: height_to: price: Product1 , 10, 20, 5

我有两张桌子。第一个表显示id_产品和产品_价格_值。下面我将向您展示我的数据库中有许多行的一个示例

表:主要产品

ID_product: product_price_value: 
       119, Product1
表:产品价值

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)
        )
);";
通过这种方式,我想我可以得到每种产品最低宽度/高度的价格。但我得到的唯一结果是当宽度或高度包含值0时。如果宽度或高度大于0,则不会返回任何内容

我在询问中是否做错了什么

有没有办法以最低的“宽度”和“高度”列获得价格


谢谢

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

选择价格 从价值到产品 其中产品价格值=? 按宽度\从+高度\从排序 限制1 否则,您将使用,这可以通过将表连接回其自身的分组版本来获得:

选择v.产品\价格\价值, v、 价格 从价值到产品v 参加 选择产品价格和价值, 最小宽度从+高度从最小尺寸从 从价值到产品 按产品、价格、价值分组 T 关于t.产品价格价值=v.产品价格价值 t.min\u尺寸=v.width\u from+v.height\u from
在这两种情况下,我都假设只有一条记录的维数最小。如果有多个这样的记录,第一个查询将不确定地选择一个;第二个查询将列出它们。如果这不是您想要的行为,您必须澄清您希望发生什么。

您能够修改表结构吗?不幸的是,不能。这不是我的结构,我只是在编码,我没有修改它的权限。如果宽度最小的行也有最大的高度呢???你肯定想要面积最小的那一行?我基本上需要最小的面积加上宽度+高度。所以是的,你是对的;面积是宽度乘以高度。我更喜欢上一个answer@Strawberry当前位置再看一次问题,他似乎想知道每种产品的价格。@草莓:我还是把它放回去了,以防万一。你好,谢谢你的回答。我想知道每种产品的价格。现在将尝试实现它,应该是宽度*高度