2017-10-04 123 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