我有两套A
和B
,套B
取决于套件A
;
set A;
set B{A};
在我的数据库中,我有两个表 - A_Table
主键a_id
和表B_Table
,复合键b_id
和a_id
(外键)。我尝试使用此脚本从B_Table
表中读取数据以设置B
:
table B_Table IN "ODBC" (ConnectionStr) "B_Table":
[b ~ b_id, a ~ a_id], B[a] ~ b;
但是这个脚本不起作用。它写了
syntax error
context: [b ~ b_id, a ~ a_id], >>> B[ <<< a] ~ b;
如何从具有2维键的表中读取数据?
答案 0 :(得分:1)
我认为您不能使用单个表声明将数据直接读入索引集,但您可以使用辅助二维集:
set AB dimen 2;
table B_Table IN "ODBC" (ConnectionStr) "B_Table":
AB <- [a_id, b_id];
read table B_Table;
let{a in A} B[a] := setof{(a, b) in AB} b;
另一种选择是将表声明编入索引A
并使用SQL语句为a in A
选择数据:
table B_Table{a in A} IN "ODBC" (ConnectionStr)
("SQL=SELECT b_id FROM B_Table WHERE a_id = " & a & ";"):
B[a] <- [b_id];
或类似的东西。