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。
请这段代码没事!!
答案 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 JOIN
,MIN()
和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
答案 3 :(得分:0)
我有点疑惑的是,以前的受访者都没有想过为这个问题提供“标准”答案,但也许这是因为它涵盖在manual中。此查询的“不相关子查询”版本提供了更强大的答案,并且在性能方面,将胜过迄今为止提供的那些。