Сокращенная запись перестановки
В записях
Для записи перестановки предлагаю писать
select *
from a, x
where @a1~@x1 and @a2~@x1 and @a3~@x1;
вместо громоздкого выражения
select *
from a
where @a1<>@a2 and @a2<>@a3 and @a1<>@a3 and
@a1 in (select @x1 from x) and
@a2 in (select @x1 from x) and
@a3 in (select @x1 from x);
Или например
select @a1,@b1,@c1
from a,b,c, x
where @a1~@x1 and @b1~@x1 and @c1~@x1;
вместо
select @a1,@b1,@c1
from a,b,c
where @a1<>@b1 and @b1<>@c1 and @a1<>@c1 and
@a1 in (select @x1 from x) and
@b1 in (select @x1 from x) and
@c1 in (select @x1 from x);
В рациональном или xml-дереве
Если для дерева без спец-символов сокращенная запись перестановки
select *
from a.b.c, x
where a1~x1 and b1~x1 and c1~x1;
еще имеет громоздкий классический аналог
select *
from a.b.c
where a1<>b1 and b1<>c1 and a1<>c1 and
a1 in (select x1 from x) and
b1 in (select x1 from x) and
c1 in (select x1 from x);
то сокращенная запись перестановки для дерева со спец-символами
(что актуально для задачи коммивояжера)
не имеет традиционных аналогов
select *
from a.b*.c, x
where b1~x1;
она означает, что-то вроде
select *
from a.b[@b1 as k1].b[@b1 as m1].b[@b1 as n1].b[@b1 as p1].b[@b1 as q1].b[@b1 as r1].b[@b1 as s1]. ... .c
where k1<>m1 and m1<>n1 and k1<>n1 and
k1 in (select x1 from x) and
m1 in (select x1 from x) and
n1 in (select x1 from x) and
p1 in (select x1 from x) and
q1 in (select x1 from x) and
r1 in (select x1 from x) and
s1 in (select x1 from x) and ... ;
Тюрин Дмитрий