次の問題があります。車の在庫を含むテーブルがあるとします。
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 レベルの階層があります。