带有 n 个条件的 SQL 左连接

问题描述 投票:0回答:1

嗨,我得到了这个包含汽车的数据库,每辆车都有选项

我有一个汽车表和一个选项表。一对多链接,一辆车有 n 个选项,一个选项只有一辆车。

我使用数据库来过滤具有特定选项(选项组合)的汽车。

我正在使用 SQLite。

我的查询看起来像这样

SELECT DISTINCT * FROM cars WHERE cars.id IN (SELECT cars.id 
                    FROM cars
                    LEFT JOIN options AS option1 ON cars.id = option1.car_id 
                    LEFT JOIN options AS option2 ON cars.id = option2.car_id 
                    LEFT JOIN options AS option3 ON cars.id = option3.car_id 
                    LEFT JOIN options AS option4 ON cars.id = option4.car_id 
                    LEFT JOIN options AS option5 ON cars.id = option5.car_id 
                    LEFT JOIN options AS option6 ON cars.id = option6.car_id 
                    WHERE cars.vin LIKE '%EA40%'
                        AND option1.options_number = 415
                        AND option2.options_number = 362
                        AND option3.options_number = 502
                        AND option4.options_description like "Bordcomputer"
                        AND option5.options_number = 494
                        AND option6.options_number = 530
                        ) ;

这只是一个业余爱好项目,我不是专业人士,这个解决方案在工作时对我来说所有这些连接看起来和感觉都非常错误。

我希望有人能给我一个更精简的较短版本的提示。

我的目标是让 n 个选项可搜索。

sql database sqlite multiple-conditions
1个回答
0
投票

这样的东西应该有效:

SELECT distinct cars.* 
FROM cars 
inner JOIN options ON cars.id = options.car_id
WHERE cars.vin LIKE '%EA40%'
AND options.options_number in ( 415, 362, 502, 494, 530)
AND options.options_description like "Bordcomputer"
;
© www.soinside.com 2019 - 2024. All rights reserved.