Настоящий TL; DR здесь заключается в том, чтобы добавить элемент словаря типа «PH» с именем «@» и поместить туда нужные столбцы. Если вы хотите использовать «SELECT *», вам также потребуется запись «@SELECT». Имейте в виду, что многозначные и однозначные поля могут здесь не работать, потому что их следует рассматривать как отдельные таблицы. Ознакомьтесь с главой 6 документа UniVerse «Администрирование SQL для администраторов баз данных», которая называется «Файлы UniVerse и SQL», чтобы понять это.
Структуры данных в стиле выбора, такие как UniVerse, являются оригинальными NOSQL, поскольку они существовали в прежние времена, когда ANSI SQL еще не был стандартом, а место для хранения метаданных стоило очень и очень дорого.
Выполнение SQL вне UniVerse сложно, потому что типизация данных в SQL определяется явно, тогда как данные и словарь в Universe являются отдельными структурами и хранятся, а иногда даже используются независимо друг от друга. Вы МОЖЕТЕ использовать словарь в качестве своего рода ключа, когда вы читаете или пишете, чтобы выяснить, с каким типом данных вы работаете, но никто не говорит, что вы должны это делать. Кроме того, язык запросов позволяет вам менять словарь, который вы используете, когда захотите, а данные, которые не соответствуют структуре словаря, просто отображаются неожиданным образом, а не фантастически взрываются. Это может быть невероятно освобождающим или привести к безумию, но это уже другая тема.
Чтобы заставить UniVerse хорошо работать с SQL, вы должны определить Dictionary таким образом, чтобы он цеплялся за базовую структуру данных. Когда вы читаете запись из Universe, вы, по сути, считываете полный набор данных с 1 или более таблицами, вложенными до 3 уровней в глубину. В вашем случае я бы взял все поля типа «D» и «I», к которым вы хотите получить доступ, и поместил их в запись «@» PH словаря. В "@" не имеет значения, многозначны они или нет. Это сделает поля доступными для ссылки из SQL, хотя у вас все равно могут возникнуть проблемы с данными в зависимости от вашего словаря.
Если вы хотите сделать "SELECT * FROM foo;" У вас должен быть оператор «@SELECT», который является подмножеством записи «@», содержащей только однозначные поля. Вы захотите сделать записи PH для каждой многозначной ассоциации, содержащей связанные поля, которые нужно захотеть и объединить, а затем получить один унифицированный запрос. Имейте в виду, что даже со всем этим SQL будет иначе реагировать на приглашение TCL, чем через ODBC.
Вот быстрый пример. NAME и EMAIL являются однозначными, а DATE и AMOUNT — многозначными.
@
PH
NAME EMAIL DATE AMOUNT
@SELECT
PH
NAME EMAIL
ORDERS
PH
DATE AMOUNT
Удачи!
person
Van Amburg
schedule
16.10.2017