Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Помогите составить SQL запрос


Автор: AlexLogos 5.11.2010, 11:21
Народ. Нужна мысля и желательно быстро))) Есть табличка Oracle:
Код

CREATE TABLE CL_10 ( 
  ID         NUMBER        NOT NULL PRIMARY KEY, 
  UPLEVEL    NUMBER, 
  TEXT       VARCHAR2 (40), 
  OLD_KOD    NUMBER, 
  ACTIVITY   CHAR (1), 
  PUBLICITY  CHAR (1)) ;

Надо из нее выбрать записи с такими ID которые не равны UPLEVEL той же таблицы.
Я пишу
Код

select cl_10.*  from cl_10, (select uplevel from cl_10 group by uplevel order by uplevel) c
where cl_10.ID<>c.uplevel 
group by cl_10.id, cl_10.uplevel,cl_10.text,cl_10.old_kod,cl_10.activity,cl_10.publicity
order by cl_10.id

но получаю все записи назад. Как правильно оформить запрос. Понятно что если написать 
Код

where cl_10.ID<>1 and cl_10.ID<>2 and cl_10.ID<>4 и т.д.

но записи могут изменятся а мне не хочется писать отдельную процедуру которая будет постоянно переформировывать запрос...

Автор: Sqlninja 5.11.2010, 11:25
Код

select * from cl_10 cl1, cl_10 cl2 where  cl1.id = cl2.id and cl1.id <>cl2.uplevel;

Автор: AlexLogos 5.11.2010, 11:43
а как отсортировать по полю id?
Если я пишу select * from cl_10 cl1, cl_10 cl2 where  cl1.id = cl2.id and cl1.id <>cl2.uplevel order by cl1.id опять возвращаются все записи...

Автор: Zloxa 6.11.2010, 13:38
Цитата(AlexLogos @  5.11.2010,  11:21 Найти цитируемый пост)
Надо из нее выбрать записи с такими ID которые не равны UPLEVEL той же таблицы.

Код

select * form CL_10  where id not in (select UPLEVEL from cl_10 where UPLEVEL is not null)


Автор: AlexLogos 8.11.2010, 10:38
Товарисчи, спасибо огромное. Это то что надо. Теперь робота закипит))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)