簡體   English   中英

僅選擇其中min(column1)和min(column2)的行

[英]Select only rows where min(column1) and min (column2)

我有兩張桌子。 第一個表顯示id_product和product_price_value。 下面,我將向您展示一個示例(在我的數據庫中,有很多行)

表格:main_product

ID_product: product_price_value: 
       119, Product1

表格:value_product

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時。如果width或height大於0,則它不返回任何值。

我在查詢中做錯了嗎?

有什么方法可以使“ width_from”和“ height_from”列的價格最低?

謝謝

如果您只想為一種產品設置這樣的價格,則可以簡單地進行排序和限制:

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

否則,您將遵循按組的最小值 ,這可以通過將表重新連接到自身的分組版本來獲得:

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

在這兩種情況下,我都假定只有一個記錄具有最小的尺寸。 如果有多個這樣的記錄,則第一個查詢將不確定地選擇一個; 第二個查詢將全部列出。 如果這不是您想要的行為,則必須澄清您希望發生的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM