0

VEHICLES (3 万ドルの Blue Honda Civic)、BRAND (Honda)、および MODEL (Civic) というテーブルを含むデータベースがあります。

各ブランドの最高価格の車の VEH_ID を取得する相関サブクエリを作成しようとしています。

簡単に言うと、すべてのブランドについて、どの車が最も高価かを知りたいのです。

SQL im を試している写真を添付し​​ましたが、うまくいきません。ほとんどの場合、私が何をしているのかわからないからです。 ここに画像の説明を入力

SELECT 
BRAND.BRAND_ID, BRAND_NAME, VEHICLE.MODEL_ID, VEH_ID
FROM BRAND, MODEL, VEHICLE
WHERE VEH_PRICE = 
( 
SELECT MAX(VEH_PRICE)
FROM VEHICLE
)
GROUP BY BRAND.BRAND_ID, BRAND_NAME, VEHICLE.MODEL_ID, VEH_ID;
4

1 に答える 1

1

vehiclesをグループ化するテーブルに新しいクエリを作成してbrandIDmax(price)

SELECT brandID, MAX(VEH_PRICE)
FROM VEHICLE
group by brandID

次に、最初に結合されたクエリを使用しvehiclesて関連するクエリを決定する別のクエリを作成しますvehicleID

SELECT 
v.BRAND_ID, MODEL_ID, VEH_ID

FROM VEHICLE v inner join
(    SELECT brandID, MAX(VEH_PRICE) as max_veh_price
    FROM VEHICLE
    group by brandID) m on
v.brandid = m.brandid and
v.veh_price = m.max_veh_price

次に、を取得するには、フィールドのテーブルにbrand_name再度参加します。そうです、max(price)が複数の車両を返す場合は、Romanの提案でトップ1に進む必要があります。brandbrandID

申し訳ありませんが、最初は画像を読み取ることができませんでした。

はい、brandIDを取得するには、モデルテーブルを車両に結合する必要があります。これは演習であり、結果として結合について学ぶことになっていると思いますか?解決策をとるだけでなく、各部分を個別に理解してください。

于 2012-11-21T19:37:15.697 に答える