powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Inclusion list - как join-нить с минимальными усилиями?
6 сообщений из 6, страница 1 из 1
Inclusion list - как join-нить с минимальными усилиями?
    #35596016
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица A, есть таблица "включений" (соответствий) для A - всё очень упрощено.
Нужно так заджойнить эти 2 таблицы, чтобы выполнялось следующее:
1) если есть соответствия A в inclusion - выбираются только они
2) если в inclusion нету соответствий - выбираются все из A

Неужели тут без union, exists, и подобной хрени не обойтись? :(

p.s. для таблицы "ИСключений" (есть у меня и такая) всё просто, а вот включения... :(
...
Рейтинг: 0 / 0
Inclusion list - как join-нить с минимальными усилиями?
    #35596187
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может, всё же ddl таблиц приведёте с примером данных и того, что получить надо?
...
Рейтинг: 0 / 0
Inclusion list - как join-нить с минимальными усилиями?
    #35596301
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Боюсь, что реальные таблицы сюда не поставлю - там устрашающе много полей, связей, зависимостей. Поэтому я решил на простых примерах.
Ну, скажем, так.

CREATE TABLE TEST.A (
ID INTEGER NOT NULL GENERATED BY DEFAULT
AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE,
NO MINVALUE, NO MAXVALUE, NO CYCLE, ORDER),
NAME VARCHAR(20) NOT NULL
)
IN USERSPACE1;

CREATE TABLE TEST.A_INCL (
ID INTEGER NOT NULL GENERATED BY DEFAULT
AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE,
NO MINVALUE, NO MAXVALUE, NO CYCLE, ORDER),
A_ID INTEGER NOT NULL
)
IN USERSPACE1;

ALTER TABLE TEST.A
ADD CONSTRAINT PK_A PRIMARY KEY
(ID);

ALTER TABLE TEST.A_INCL
ADD CONSTRAINT PK_A_INCL PRIMARY KEY
(ID);

ALTER TABLE TEST.A_INCL
ADD CONSTRAINT FK_A FOREIGN KEY
(A_ID)
REFERENCES TEST.A
(ID)
ON DELETE CASCADE
ON UPDATE NO ACTION;
...
Рейтинг: 0 / 0
Inclusion list - как join-нить с минимальными усилиями?
    #35596313
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле A_INCL - это таблица связей: т.е. она включает пары (A, B), где B - еще одна сущность.
Для простоты я ключ B убрал...

Должно работать так
1) A содержит A1, A2, A3
A_INCL содержит пары (A1, B1), (A1, B2), (A3, B1) -> из A надо выбрать только A1 и A3
2) A содержит A1, A2, A3
A_INCL не содержит записей -> A_INCL игнорируется и из A выбираются все Ax
...
Рейтинг: 0 / 0
Inclusion list - как join-нить с минимальными усилиями?
    #35596373
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NafigatorНа самом деле A_INCL - это таблица связей: т.е. она включает пары (A, B), где B - еще одна сущность.
Для простоты я ключ B убрал...

Должно работать так
1) A содержит A1, A2, A3
A_INCL содержит пары (A1, B1), (A1, B2), (A3, B1) -> из A надо выбрать только A1 и A3
2) A содержит A1, A2, A3
A_INCL не содержит записей -> A_INCL игнорируется и из A выбираются все Ax
Код: plaintext
1.
2.
3.
4.
5.
select a.*
from a
left join (select distinct a_id from a_incl) d on a.id=d.a_id
left join (select distinct  1  a_id from a_incl) g on  1 = 1 
where g.a_id is null or (g.a_id is not null and d.a_id is not null)
...
Рейтинг: 0 / 0
Inclusion list - как join-нить с минимальными усилиями?
    #35596706
Nafigator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое.
Даже разобравшись в том, как работает запрос, всё равно не покидает ощущение, что хитрО сделано... Т.е. нетривиальный подход... :))
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Inclusion list - как join-нить с минимальными усилиями?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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