powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Выбор значений из списка встроенных объектов
8 сообщений из 8, страница 1 из 1
Выбор значений из списка встроенных объектов
    #35569174
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 3 класса:
Class A Extends %Persistent
{
Property sublinkList As list Of B;

Property name As %String
}

Class B Extends %Serial
{
Property nameC As C;

Property remark As %String;
}

Class С Extends %Persistent
{
Property name As %String;

Property remark As %String;
}

Как выбрать с помощью SQL запроса всех A, у которых элементы списка sublinkList ссылаются на некоторый C.
...
Рейтинг: 0 / 0
Выбор значений из списка встроенных объектов
    #35569563
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А использование списка обязательно ?

При помощи массива SQL достаточно прост
...
Рейтинг: 0 / 0
Выбор значений из списка встроенных объектов
    #35570313
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, так:
Код: plaintext
1.
2.
select a.* from test.A,test.C c where 
for SOME %ELEMENT(sublinkList) (%KEY=c.ID)
and c.name='asd'

Хотя, конечно, было бы проще так:
Код: plaintext
select * from test.A where for SOME %ELEMENT(sublinkList) (%VALUE->name='asd')
Попробуйте в WRC завести соответствующий Enhancement .
...
Рейтинг: 0 / 0
Выбор значений из списка встроенных объектов
    #35571121
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2servit
Ни первый, ни второй способ не работает в Каше 5.2.
...
Рейтинг: 0 / 0
Выбор значений из списка встроенных объектов
    #35571201
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, второй способ нигде не работает. Это пример, как удобней было бы. Я поэтому и упомянул про Enhancement .

А второй пример должен работать в версии 5.2 . В версии 2008.2.RC точно работает.
Попробуйте еще так:
Код: plaintext
1.
2.
select a.* from test.A a,test.C c where 
for SOME %ELEMENT(a.sublinkList) (%KEY=c.ID)
and c.name='asd'
...
Рейтинг: 0 / 0
Выбор значений из списка встроенных объектов
    #35571408
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык .... с чего бы %KEY быть равным ID таблицы С ?

Там только поля совпадают - а чему равен %KEY в списке не ясно - скорее всего просто номеру элемента в списке (1,2,3,4...)
...
Рейтинг: 0 / 0
Выбор значений из списка встроенных объектов
    #35571427
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут скорее всего нужно писать что то вроде

Код: plaintext
1.
2.
3.
select a.* from test.A a,test.C c where 
for SOME %ELEMENT(a.sublinkList) ($LISTGET(%VALUE, 2 )=c.name AND $LISTGET(%VALUE, 3 )=c. remark)
and c.ID=?

При этом прижедться помнить структуру хранения для B
...
Рейтинг: 0 / 0
Выбор значений из списка встроенных объектов
    #35571690
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PtnДык .... с чего бы %KEY быть равным ID таблицы С ?

Там только поля совпадают - а чему равен %KEY в списке не ясно - скорее всего просто номеру элемента в списке (1,2,3,4...)
Да, Вы правы.

Рабочий вариант:
Код: plaintext
1.
2.
3.
select distinct a.* from test.A a,test.C c where 
for SOME %ELEMENT(a.sublinkList) ($LISTGET($LISTGET(%VALUE, 1 ), 1 )=+c.ID)
and c.name='asd'
или так, если известен C.ID:
Код: plaintext
1.
2.
select * from test.A where 
for SOME %ELEMENT(sublinkList) ($LISTGET($LISTGET(%VALUE, 1 ), 1 )= 123 )
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Выбор значений из списка встроенных объектов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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