2014-10-11 136 views
1

我有兩套AB,集合B取決於集合A;從數據庫表中讀取集合

set A; 
set B{A}; 

在我的數據庫中,我有兩個表 - A_Table與主鍵a_id和表B_Table複合鍵b_ida_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個關鍵點的表中讀取數據到一維集?

回答

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]; 

或類似的東西。

+1

謝謝,我嘗試了兩種選擇,他們工作得很好。 – ekarus303 2014-10-12 17:50:56