2013-05-21 83 views
0
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一個INNER JOIN tab_product_price b,其中pro_code像( ' 「$搜索。」 %')ORDER BY pro_code LIMIT 5" 但在搜索框中沒有pro_code顯示。

請驗證碼是OK!

回答

1

檢查MySQL JOIN s,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`; 

這也適用,如果你有沒有指定價格的產品。

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 ║ 
╚════╩══════╩════════╩══════════════╝ 
+0

非常感謝。 – Asif

+0

不客氣':)' –

+0

爲什麼GROUP BY a.id,a.code,a.name?只有通過a.code才能工作?不是嗎? –

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

0

我有點摸不着頭腦中沒有一個認爲提供「標準」的回答這個問題之前的受訪者,但也許這是因爲它涵蓋了manual。這個查詢的'不相關的子查詢'版本提供了一個更強大的答案,並且在性能方面將勝過迄今爲止提供的答案。

相關問題