Проблема с этим:
SELECT ID, modle, DOW, TOD
FROM event x
WHERE modle = (SELECT modle FROM event y WHERE y.TOD = x.TOD)
... это подзапрос может вернуть более одной строки. Для таких ситуаций вы хотите использовать IN
, а не равно:
SELECT ID, modle, DOW, TOD
FROM event x
WHERE modle IN (SELECT modle FROM event y WHERE y.TOD = x.TOD)
В противном случае вы захотите использовать критерии агрегирования или фильтрации, чтобы гарантировать, что из подзапроса всегда возвращается одна запись.
Я предпочитаю использовать синтаксис ANSI-92 JOIN:
SELECT x.*
FROM EVENT x
JOIN EVENT y ON y.tod = x.tod
AND y.modle = 'co72010'
Использование IN
SELECT x.*
FROM EVENT x
WHERE x.tod IN(SELECT y.tod
FROM EVENT y
WHERE y.modle = 'co72010')
Использование EXISTS
SELECT x.*
FROM EVENT x
WHERE EXISTS(SELECT NULL
FROM EVENT y
WHERE y.modle = 'co72010'
AND y.tod = x.tod)