Я полагаю, это не так сложно, но я не могу ее получить.SQL Выберите строку из таблицы с минимальным значением из другой таблицы
Например, у меня есть таблица T1
:
ID
-----
1000
1001
И у меня есть таблица T2
:
ID GROUP DATE
--------------------------
1000 ADSL 2.2.2012
1000 null 3.2.2012
1000 NOC 4.2.2012
1001 NOC 5.2.2012
1001 null 6.2.2012
1001 TV 7.2.2012
Я хочу, чтобы выбрать из T1
только строки, которая имеет как GROUP
значение NOC
от T2
, но только если NOC
группа не менее DATE
значение в T2
.
Таким образом, мой результат в этом случае будет только 1001
, потому что для его минимума DATE
5.2.2012 Группа NOC
!
Мне не нужны никакие соединения, и я не могу использовать значения по умолчанию для идентификаторов (where id=1000 or id=1001
), потому что это просто пример некоторой большой таблицы.
Важно также то, что я не могу использовать t1.id = t2.id
, потому что в каком-то приложении, где я использую это, я не могу написать все выражение SQL, но только частичное. Я могу использовать только id.
Я пытался что-то вроде:
select id
from t1
where
id in (select id from t2
where group = 'NOC'
and date in (select min(date) from t2
where id in (select id from t1)
)
)
Но это не работает.
Я знаю, это кажется немного запутанным, но я действительно не могу использовать where t1.id = t2.id
Благодаря
Вы получаете ошибку синтаксиса, потому что 'group' является зарезервированным словом? –
нет Я не (настоящее имя поля PEOPLEGROUP), так что это не проблема – Dejan
Я получаю вывод, но мой результат не подходит для этой большой таблицы – Dejan