Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помогите с запросом / 8 сообщений из 8, страница 1 из 1
20.09.2007, 12:21
    #34813978
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Здравствуйте всем!

DB2 v8.2 fixpack 14.
Есть БД, в которой следующие таблицы:
TAB1 c полями T1ID и другими, TAB2 с полями T2ID,T1ID, NSIID и другими, NSITAB c полями NSIID и NSINAME. Во всех таблицах имеются уникальные ключи по ID. TAB1 относится к TAB2 как "один ко многим", есть необходимый FOREIGN в TAB2.

Нужно получить записи TAB1, дополнив их строковым полем, в котором бы через разделитель были перечислены NSINAME из NSITAB по коду NSIID (при условии, что он не 0) записей TAB2, учитывая отношение между TAB1 и TAB2. Т.е. каждая запись в выборке дополняется строковым полем, в котором через разделитель (неважно какой, например ",") были перечислены наименования из справочника, NSIID которых имеются в дочерних записях TAB2.

Заранее благодарен. Я еще только учусь, поэтому не сочтите за наглость, если таковая присутствует в этом письме.

С уважением, Семен Попов
...
Рейтинг: 0 / 0
20.09.2007, 12:48
    #34814093
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Может чем поможет: тынц
...
Рейтинг: 0 / 0
20.09.2007, 14:30
    #34814630
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Бабичев СергейМожет чем поможет: тынц
Да-а, мне это сразу ниасилить. Неужели все так сложно? Попробую разобраться. А может лучше хранимую процедуру написать? Там не проще?
...
Рейтинг: 0 / 0
20.09.2007, 16:25
    #34815156
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
В предыдущем сообщении забыл отблагодарить Сергея за его отзыв по моей проблеме. Спасибо. Попробую разобраться с кодом, который посоветован, может получится его упростить.
Теперь далее. Вообще-то, такая выборка мне нужна для вывода в отчет в моем web-приложении. Изначально, мне пришла идея вытаскивать записи TAB1 с дополнительным полем, которое бы содержало подтаблицу - дочерние записи TAB2 по записи TAB1. Тогда бы, всю обработку по объединению значений в одно поле я бы возложил на сервлет, перебирая в нем записи подтаблицы, и уже в JSP отображал бы результат. Но такой запрос построить, наверно, невозможно. Поэтому и возложил всю работу на DB2. Хранимая процедура может была бы самым оптимальным решением.
...
Рейтинг: 0 / 0
21.09.2007, 09:57
    #34816662
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Вот что наклепал:
Код: plaintext
1.
2.
3.
SELECT * FROM (
SELECT T1ID AS rowid FROM TAB1,
SELECT VALUE(SUM(CONCAT(n.NSINAME,', ')),'') FROM TAB2 tb2, NSITAB n WHERE tb2.T1ID=rowid AND tb2.NSIID=n.NSIID
)
Идея понятна, а синтаксис?
...
Рейтинг: 0 / 0
26.09.2007, 09:22
    #34826481
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Semen PopovЕсть БД, в которой следующие таблицы:
TAB1 c полями T1ID и другими, TAB2 с полями T2ID,T1ID, NSIID и другими, NSITAB c полями NSIID и NSINAME. Во всех таблицах имеются уникальные ключи по ID. TAB1 относится к TAB2 как "один ко многим", есть необходимый FOREIGN в TAB2.
Если можно, то помогите, пожалуйста, со следующим запросом:
Вытащить записи TAB2+(NSINAME из NSITAB), где NSINAME соответствует коду TAB2.NSIID, если TAB2.NSIID > 0, или равно ""(пустой строке), если TAB2.NSIID=0.
Дальше я разберусь.

Запрос типа
Код: plaintext
SELECT TAB2.*,NSITAB.NAME FROM TAB2, NSITAB WHERE TAB2.NSIID=NSITAB.NSIID
вытащит мне не все записи TAB2. Можно ли в нем что-то подправить, чтобы получить результат?
Спасибо
...
Рейтинг: 0 / 0
28.09.2007, 00:43
    #34833137
mustaccio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Код: plaintext
SELECT TAB2.*,coalesce(NSITAB.NAME, '') FROM TAB2 left outer join NSITAB on TAB2.NSIID=NSITAB.NSIID

Предполагается, что в NSITAB нет записей с NSIID=0
...
Рейтинг: 0 / 0
28.09.2007, 12:51
    #34834314
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Премного благодарен. То, что нужно.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помогите с запросом / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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