2012-11-21 18 views
0

我有一個數據庫,包括:VEHICLES(藍色本田Civic花費3萬美元),BRAND(本田)和MODEL(Civic)。使用MAX和GROUP BY的相關子查詢

我正在嘗試創建一個相關的子查詢這將給我從每個品牌最高價格的汽車VEH_IDs。

簡單地說,我想知道所有品牌哪輛汽車的成本最高。

我附上了一個圖片與SQL即時嘗試,但它不工作。很可能是因爲我不知道我在做什麼。 enter image description here

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; 

回答

1

通過brandID上創建vehicles分組表中一個新的查詢,以確定max(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,請再次加入brandID字段中的brand表,如果max(價格)返回多個車輛,那麼您必須按照Roman的建議1進行操作。

抱歉,起初無法讀取您的圖像。

是的,您需要將模型表加入車輛以獲取品牌標識。我假設這是一個練習,你應該瞭解有關連接的結果?不要只是採取解決方案,然後,單獨瞭解每件作品。

+0

即時通訊使用Access。我只能使用一條語句進行查詢。 – Batman

+0

如果您使用的是Access,您可以創建儘可能多的查詢。 – Beth