Поля, которые необходимо извлечь, перечисляются в XTree-выражении после служебного слова 'from' (после служебного слова 'select' перечисляются выводимые звенья - см. ниже). Если не указано не одного поля, то это эквивалентно указанию всех полей.
Часть звеньев дерева может быть скрыта от вывода. Для этого все дерево записывается после служебного слова 'from', а выводимые звенья - после служебного слова 'select'.
Для конструкций вида 'a.b.k.m', где "a" и "b" связаны внешним ключом (FK), "k" и "m" связаны внешним ключом, а между "b" и "k" внешнего ключа нет, можно задать виртуальный (временный, сроком действия на одно sql-выражение) внешний ключ. Виртуальные внешние ключи перечисляются после служебного слова 'where'.
Таким образом SQL/XLang работает не только с отдельными таблицами, а с целыми конгламератами таблиц (с деревьями).
Для конструкций вида 'a.b*.c' и 'a.b+.c', где "a" и "b" связаны внешним ключом (FK), "b" и "c" связаны внешним ключом, а "b" не ссылается сам на себя с помощью внешнего ключа, можно задать виртуальный внешний ключ после служебного слова 'where', связав предыщущий и последующий "b". Предыщущий и последующий "b" указывают в функциях previous и next.
Псевдонимы (alias) таблиц по-прежнему перечисляются после служебного слова 'from'. Псевдонимы могут использоваться в для задания виртуальных внешних ключей.
Отношения, связывающие поля дерева, могут быть перечислены как после служебного слова 'from', так и после служебного слова 'where'.
from a.b[@b1=5] from a.b[@b1] from a.b.c[@c1=../../@a1] from a.b[position()=1 xor @b1=5]*.c from a.b[last() xor @b1=5]*.c |
from a.b where @b1=5 -- where b/@b1=5 from a.b where @b1 is not null from a.b.c where @a1=@c1 -- where a/@a1=c/@c1 from a.b*.c where first(b)/@b1=5; from a.b*.c where last(b)/@b1=5; |
Чтобы не вводить пользователя в заблуждение и не вносить расстройство в умы, нужно отказаться от трех старых обозначений и заменить их новыми.
|
select a/@a1 -- old notation to request fields instead of sections |
|
|
where b/@b1=5 |
|
|
from scheme§tab -- database%scheme§tab |