powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Возможности DB2 (к знатокам СУБД)
9 сообщений из 9, страница 1 из 1
Возможности DB2 (к знатокам СУБД)
    #38512127
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MSSQL 2008R2 и выше появились новые возможности:

Стандартный синтаксис
Код: sql
1.
2.
select * from  PR_TYPE as P 
where  not exists (select 1 from FACTS as F where F.id_PR_TYPE = P.ID)



Новые возможности
Код: sql
1.
2.
select * from  PR_TYPE as P 
where  P.ID  <> ALL(select id_PR_TYPE from FACTS)



Ещё пример
Код: sql
1.
2.
select * from  PR_TYPE as P 
where  exists (select 1 from FACTS as F where F.id_PR_TYPE = P.ID)



Ну и другое ключевое слово
Код: sql
1.
2.
select * from  PR_TYPE as P 
where  P.ID  = SOME(select id_PR_TYPE from FACTS)





Стандартно:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select * from 
  (
  select row_number() over(order by  t.coun desc) as number , t.id_pr_type, t.coun 
      from
      (
      select top 40 count(*) as coun, id_pr_type from FACTS
       group by id_pr_type
	   order by 1 desc
	   ) as t
   ) as tt
   where tt.number between 5 and 24




--выбрать первые 20 строк (максимально встречающиеся), исключая первые 4-ре строки
Код: sql
1.
2.
3.
4.
5.
select count(*) as coun, id_pr_type from FACTS
       group by id_pr_type
	   order by 1 desc
	   OFFSET 4 ROWS
	   FETCH NEXT 20 ROWS ONLY



Есть ли такие фичи в DB2 (у нас 9.7). Я про аналоги any,some,all и OFFSET соответственно.
Спасибо...
...
Рейтинг: 0 / 0
Возможности DB2 (к знатокам СУБД)
    #38512132
у тебя же есть СУБД под рукой. Кто мешает попробовать?
...
Рейтинг: 0 / 0
Возможности DB2 (к знатокам СУБД)
    #38512225
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как бэ не нашёл напрямую аналогов и скрипты не пошли с тестовыми примерами. Я ж не знаю как в DB2 решили ALL или SOME реализовать,я ж не знаю полеты их фантазии
...
Рейтинг: 0 / 0
Возможности DB2 (к знатокам СУБД)
    #38512304
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed,

Марка что то не видать! Может он католик и уже праздновать начал?
...
Рейтинг: 0 / 0
Возможности DB2 (к знатокам СУБД)
    #38512402
CawaSPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
medoed,

Неужели сложно заглянуть в доку?
Предикат "IN"/"NOT IN" ( http://pic.dhe.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0000750.html) с возможными эквивалентами "= ANY(...)" и "<> ALL(...)"

Только внимательно смотрите на разницу в поведении с NULL'able полями.

Кляузы OFFSET в SELECT'е нет. Но, надо сказать, нормально работают scrollable result set'ы/курсоры (хоть задом на перёд читай).
...
Рейтинг: 0 / 0
Возможности DB2 (к знатокам СУБД)
    #38512438
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CawaSPb,
Ну это если знать, что искать, я чё й то думал, что реализация по другому будет)).
Да вроде более менее работает:

Код: sql
1.
2.
3.
4.
5.
6.
7.
with t(id) as (
        values(1) 
        union values(2)
        union values(3) 
  ) 
select * from t
where id = any(select id from t)




OFFSET ладно, можно и так пока пожить:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with t(id) as (
     
       values(1) 
       union values(2)
       union values(3)
       union values(5) 
       union values(7) 
  ) 
  ,tt (id,num) as
  ( select id,
    dense_rank () over (order by id)
    from t
  )
select * from tt where num between 2 and 4
...
Рейтинг: 0 / 0
Возможности DB2 (к знатокам СУБД)
    #38512816
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
medoedВ MSSQL 2008R2 и выше появились новые возможности:

--выбрать первые 20 строк (максимально встречающиеся), исключая первые 4-ре строки
Код: sql
1.
2.
3.
4.
5.
select count(*) as coun, id_pr_type from FACTS
       group by id_pr_type
	   order by 1 desc
	   OFFSET 4 ROWS
	   FETCH NEXT 20 ROWS ONLY



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
db2set db2_compatibility_vector=4001
db2stop
db2start

select varchar(tabname, 20) from syscat.tables order by 1 limit 20
-- 5 - offset
select varchar(tabname, 20) from syscat.tables order by 1 limit 5,20
select varchar(tabname, 20) from syscat.tables where rownum between 5 and 10


В доке по 9.7 нет описания 0x4000 (LIMIT and OFFSET clauses), но по крайней мере на 9.7.6 работает.
В доке по 10.1 есть, но там ошибка - написано, что для них - 0x8000.
...
Рейтинг: 0 / 0
Возможности DB2 (к знатокам СУБД)
    #38513035
Фотография medoed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Марк!
У нас 9.7.2, по-моему (без поддержки синтаксиса Oracle). liimit не поддерживается.
P.S. Дока действительная хреновая у IBM, по сравнению с Microsoft, но это моё имхо...
...
Рейтинг: 0 / 0
Возможности DB2 (к знатокам СУБД)
    #38514056
Dis07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DB2 UDB for AS/400 SQL Reference http://publib.boulder.ibm.com/html/as400/v4r4/ic2962/info/db2/rbafzmst57.htm#Header_231
Например,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT * 
FROM A 
WHERE NNNN = ANY(
		SELECT NNNN 
		FROM A 
		GROUP BY NNNN 
		/*OFFSET 4 ROWS*/ 
		FETCH FIRST 12 ROWS ONLY
		)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Возможности DB2 (к знатокам СУБД)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]