我遇到以下问题。假设我有一个包含汽车的库存表:IN中的MYSQL元组因通配符匹配而暂停
VIN, MAKE, MODEL, PRICE
和我有一个包含各种汽车类(例如,紧凑型,中型,SUV等)
MAKE, MODEL, CLASS
JEEP, NULL , SUV
FORD, EXPLORER, SUV
TOYOTA, YARIS, COMPACT
NULL, CUBE, COMPACT
...
我想知道另一个表我如何选择某个班级的数据库中的所有车辆?也许,我想知道每班有多少辆汽车存在?
我可以写这样的查询。
SELECT COUNT(*) FROM CARS WHERE (MAKE, MODEL) IN (SELECT MAKE, MODEL FROM CLASSES WHERE CLASS = 'SUV')
这里的问题,我不会居然能应对我的数据为NULL。我想说的是,所有JEEP车型都是SUV,或者任何称为CUBE的MAKE车都是紧凑型车。
这样做可以假设没有冲突吗?我能有一个优先级设置,像所有的门廊是,除了这是做这样的事情的SUV卡宴车:
MAKE, MODEL, CLASS
PORCHE, NULL , CAR
PORCHE, CAYENNE, SUV
如果这是不可能的MySQL,有没有更好的DB技术在那里那会很好。让我们假设CLASSES表将包含50K +行,而CARS表将包含5M +行。我正在寻找一种在数据库中执行这种查询的快速方法,而不需要获取数百万行来处理脚本?另外,如果它不只是品牌和型号,而且还有子型号,发动机等。
另外,我简化了一些数据,有4个层次的层次结构。