需要以最低价格查找产品详细信息

时间:2013-05-21 05:57:18

标签: php mysql sql

 tbl_product:                             
+------+------+------------+-------+     
| id   | code | name  |brand|origin|
+------+------+------------+-------+
|    1 | 1001 | apple | X   | a    |
|    2 | 1002 | mango | V   | b    |
|    3 | 1003 | banana| Z   | a    |
+------+------+------------+-------+
tbl_product_price:
+------+------+------+
| id   | code | price|
+------+------+------+
|    1 | 1001 |  250 |
|    2 | 1001 |  220 | 
|    3 | 1002 |  175 |
|    4 | 1002 |  180 |
|    5 | 1003 |  170 |
|    6 | 1003 |  190 |  
+------+------+------+

我有一个搜索框,如果我选择任何专业

SELECT a.id,a.pro_code,a.pro_unit,MIN(b.pro_price)FROM tab_product a INNER JOIN tab_product_price b WHERE pro_code like('“。$ search。”%')ORDER BY pro_code LIMIT 5“   但SEARCH框中没有显示pro_code。

请这段代码没事!!

4 个答案:

答案 0 :(得分:5)

首先要做的是JOIN两个表格,因为产品的Price属于tbl_product_price。加入后,您需要使用汇总函数MIN()GROUP BY来获得每个组中的最低价格。

SELECT  a.id, a.code, a.name, MIN(b.Price) minimumPrice
FROM    tbl_product a
        INNER JOIN tbl_product_price b
            ON a.code = b.code
GROUP   BY a.id, a.code, a.name

要进一步了解联接,请访问以下链接:

输出

╔════╦══════╦════════╦══════════════╗
║ ID ║ CODE ║  NAME  ║ MINIMUMPRICE ║
╠════╬══════╬════════╬══════════════╣
║  1 ║ 1001 ║ apple  ║          220 ║
║  2 ║ 1002 ║ mango  ║          175 ║
║  3 ║ 1003 ║ banana ║          170 ║
╚════╩══════╩════════╩══════════════╝

答案 1 :(得分:1)

查看MySQL JOINMIN()IFNULL()函数:

SELECT
    `id`, `a`.`code`, `name`, IFNULL(MIN(`price`), 'no min price') as `minimum_price`
FROM
    `tbl_product` `a` LEFT JOIN `tbl_product_price` `b` ON `a`.`code` = `b`.`code`
GROUP BY
    `id`, `a`.`code`, `name`;

如果您的产品没有指定价格,这也可以。

答案 2 :(得分:0)

SELECT  tbl_product.id, tbl_product.code, tbl_product.name, MIN(tbl_product_price.Price) minimumPrice
FROM    tbl_product,tbl_product_price
        Where tbl_product.code = tbl_product_price.code
GROUP BY  tbl_product.code

SQL FIDDLE

答案 3 :(得分:0)

我有点疑惑的是,以前的受访者都没有想过为这个问题提供“标准”答案,但也许这是因为它涵盖在manual中。此查询的“不相关子查询”版本提供了更强大的答案,并且在性能方面,将胜过迄今为止提供的那些。