Я делаю некоторый SQL для экзамена, который у меня есть в четверг, и у меня есть сомнения, если я правильно использую инструкцию EXISTS.Правильно ли это использовать EXISTS?
Итак, у меня есть БД с 2 таблицами
Machines Maintenance
============ ==============
PK ID_Machine PK ID_Machine FK
Name PK ID_Task FK
Date_bought Date
Таким образом, запрос они хотят, чтобы я написал, говорит «Показать все данные из старейших машины, которая не получила никакого обслуживания в 2011 году»
то, как я сделал это следующим образом:
SELECT M.ID_MACHINE, M.NAME, M.DATE_BOUGHT
FROM MACHINES M
WHERE NOT EXISTS (SELECT MA.*
FROM MAINTENANCE MA
WHERE MA.ID_MACHINE = M.ID_MACHINE
AND YEAR(MA.DATE) = 2011)
AND EXISTS (SELECT MIN(M2.DATE_BOUGHT)
FROM MACHINE M2
WHERE M2.ID_MACHINE = M.ID_MACHINE)
является ли это правильный способ сделать этот запрос? имеет ли смысл, что я использую SELECT MIN() внутри инструкции EXISTS?
Заранее благодарен всем!
Ну .... то, что происходит, когда вы пытаетесь выполнить запрос? –
Ну, дело в том, что у меня на самом деле нет этой БД, созданной в любой СУБД. Это всего лишь упражнение в учебнике, и я решаю его в листе бумаги. К сожалению, у учебника нет ответов, поэтому я и спрашивал :) – nachoargentina
ну для начала, вам нужно 'AND' * вместо * второго' WHERE'. Кроме того, никогда не используйте 'SELECT MIN()' внутри 'EXISTS' - это не имеет смысла. – Bohemian