我有一个包含表格的数据库:车辆(蓝色本田思域价值3万美元),品牌(本田)和模型(思域)。
我正在尝试创建一个相关的子查询,它会为每个品牌中价格最高的汽车提供VEH_ID。
简单地说,我想知道所有汽车成本最高的品牌。
我已经附加了SQL即尝试的图片,但它不起作用。很可能是因为我不知道我在做什么。
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;
答案 0 :(得分:1)
按vehicles
分组brandID
表格创建新查询,以确定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
,请再次加入brand
字段上的brandID
表格,是的,如果max(price)返回多个广告系列,您将会必须与罗马建议的前1名一起使用。
是的,您需要将模型表加入车辆以获取brandID。我假设这是一个练习,你应该学习连接的结果?不要只是采取解决方案,然后逐个理解每一件。