我的问题是用q创建一个表并使用外键。我知道如何按照以下方式进行操作
q)T1:([id:1 2 3 4 5]d1:"acbde")
q)T2:([id:1 2 3 4 5]f1:`T1$2 2 2 4 4)
但现在让我说我想用!
运算符以这种方式翻译字典来创建表格
q)T3:1!flip ((`id`f1 )!((1 2 3 4 5);(2 2 2 4 4)))
如何使用这种创建表格的方式为表T1主键设置外键。
更新
好吧,我认为我的上层例子足以让我自己解决我的实际问题,但遗憾的是它没有。
如果我有列表布局A和B的列表
,该怎么办?q)A:enlist 1 2 3 4 5
q)B:(enlist "abcde"), (enlist `v`w`x`y`z)
q)flip (`id`v1`v2)!(B,A)
如何将列表A作为表T1的外键?
更新2
如果我A
来自某个地方,而不是自己初始化,我将如何实施呢?我是否必须从列表中复制一份?
答案 0 :(得分:4)
您可以在列值列表中使用相同的语法:
q)T3:1!flip ((`id`f1 )!((1 2 3 4 5);(`T1$2 2 2 4 4)))
q)T3~T2
1b
<强>更新强>
对于这种情况,我们可以在列表中使用相同的语法 -
q)A:enlist`T1$1 2 3 4 5
q)meta flip (`id`v1`v2)!(B,A)
c | t f a
--| ------
id| c
v1| s
v2| j T1
<强> UPDATE2:强>
应用于变量名的相同语法:
q)A:1 2 3 4 5
q)meta flip (`id`v1`v2)!(B,enlist`T1$A)
c | t f a
--| ------
id| c
v1| s
v2| j T1