Подзапрос с использованием ключевого слова «IN» - PullRequest
0 голосов
/ 04 апреля 2019

Проблема: В базе данных автомобилей есть таблица Model со столбцами, ModelID, MakeID и ModelName и таблица Car со столбцами, CarID, ModelID, VIN, ModelYear и StickerPrice. Используйте подзапрос вместе с IN, чтобы перечислить все названия моделей со стоимостью стикера, превышающей 30000

Я смог решить проблему, используя:

SELECT ModelName FROM MODEL 
WHERE ModelID IN (SELECT ModelID FROM CAR WHERE stickerPrice >30000);

однако я пытаюсь выполнить запрос к таблице «МОДЕЛЬ», чтобы отобразить «имя модели» и «цену стикера» с помощью ключевого слова «В», но я получаю некоторые ошибки. Я попробовал:

SELECT  ModelName, stickerPrice FROM car 
WHERE stickerPrice >30000 
AND ModelID IN(SELECT ModelID From Model);

но я получил и ошибку, потому что "modelname" - это поле в таблице Model. Я также попробовал псевдоним:

SELECT  M.ModelName, stickerPrice FROM car 
WHERE stickerPrice >30000 
AND ModelID IN(SELECT ModelID From Model) AS M;

но я получаю синтаксическую ошибку из-за ключевого слова "AS".

Я просто не уверен, почему иначе это не сработает.

1 Ответ

1 голос
/ 04 апреля 2019

Ваш первый запрос - это путь (с использованием подхода «IN» / подзапрос).

Во второй попытке вы выбираете данные из таблицы «car», в которой нет столбца «ModelName». Просто так не работает. На самом деле не поймите идею вашего второго подхода.

Альтернативным решением было бы объединить данные как-то так:

SELECT MODEL.ModelName
FROM MODEL
JOIN CAR
  ON MODEL.ModelID = CAR.ModelID
WHERE CAR.StickerPrice > 30000;
...