如果我有两个谓词(非函数式):
addblock 'city(city_dim_id) -> int(city_dim_id).'
addblock 'city_name[city_dim_id] = name -> int(city_dim_id), string(name).'我可以补充一些事实:
exec '+city(1).'
exec '+city_name[0] = "N/A".'
exec '+city_name[1] = "Chicago".'下面是对谓词中的事实的查询:
query '_(city_name) <- city_name(city_name, _).'
query '_(city_name) <- city_name(_, city_name).'
query '_(city_dim_id, city_name) <- city_name(city_dim_id, city_name).'我的问题是如何查询以显示1.两个表中的city_dim_id是什么? 2.返回city_dim_id和city_name,但只返回city_dim_id在两个表中的位置?
提前谢谢。
发布于 2016-07-27 16:02:03
对不起,我很难理解这个问题。下面的代码将返回具有相同city_name的city_dim_id。
_(c1, c2) <-
city(c1),
city(c2),
city_name[c1] = city_name[c2],
c1 != c2.发布于 2016-07-28 03:51:05
_(id) <-城市(Id),city_nameid =_。
另一方面,如果你想要两个表中的id,你需要用析取来代替合取。
_(id) <- city(id); city_name[id] = _._(id,名称) <-城市(Id),city_nameid =名称。
注意:如果使用方括号语法city_name[id] = name,则谓词将是函数式的
https://stackoverflow.com/questions/38598215
复制相似问题