我遇到以下問題。假設我有一個包含汽車的庫存表: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個層次的層次結構。