2017-10-04 163 views
0

我有數據庫與汽車和所有可能的汽車選項與價格。我想通過選項進行汽車搜索。例如:我需要一輛帶加熱座椅的汽車。SQL - 選擇最低價格

我有一個SQL查詢的問題。我需要從汽車選項中獲得最低價格。在我的表「cars_options」中有選項和包,例如(自動空調,停車傳感器,包裝(停車傳感器,加熱座椅)

當我們尋找帶有停車傳感器的汽車時,用最低的價格倒車雷達

SQL Fiddle example

Climatronic自動空調:

VW Passat | 1000 // package with climatronic is too expensive 
VW Golf| 1000 // package with climatronic is too expensive 

停車傳感器和Climatronic自動空調

VW Passat | 1400 // climatronic + parking sensor is too expensive (1500), package is cheaper 
VW Golf| 1400 // golf has parking sensor only in package 

最大的問題是與包,我不知道如何檢查什麼更便宜或什麼是更昂貴的。

回答

0

您需要一個表格來查看包裝中的選項。

而不是鏈接到選項,例如Climatronic,鏈接到一個只是自動電子束的包,或者有幾個選項的鏈接。

如 套餐:CarId,包標識,價格

選項:OptionId,OPTIONNAME

PackageOptions 包標識,OptionId

0

我第二個具有包一個單獨的表,並將其鏈接到的這個想法選項。現在可能會有所幫助(如果我理解正確的話)。

SELECT c. name as "CAR", co.name "OPTION", co.price FROM CARS c 
INNER JOIN CARS_HAS_OPTIONS cho ON c.id = cho. id_car 
INNER JOIN CARS_OPTIONS co ON co.id = cho. id_car_option 
WHERE co.name LIKE '%Parking sensor%' 
ORDER BY PRICE ASC