首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unidata命令从两个文件查询数据

unidata命令从两个文件查询数据
EN

Stack Overflow用户
提问于 2013-08-07 00:56:15
回答 2查看 1.5K关注 0票数 0

我的unidata数据库中有两个文件,如下所示。

CUSTOMER

代码语言:javascript
复制
    -@CUSTOMERID
    -NAME
    -@HOBBYID (multi-valued, virtual attribute)

HOBBY

代码语言:javascript
复制
    -@HOBBYID
    -HOBBY

CUSTOMERHOBBY是一对多关系。我想查询一份适合某项爱好的客户列表。unidata命令是什么?

期待解决方案。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-08-07 03:30:04

下面是一个可以在ECL提示符下运行的简单查询

LIST HOBBY WITH HOBBY = "MyHobby" @CUSTOMERID @CUSTOMERID.NAME

让我来解释一下。

当你看到一个多对一的关系时,如果你从“多个”表开始,你可以使用虚拟字典条目来做这件事(我知道,这与直觉相反,对吧?)

LIST HOBBY

在这里,我们只是指示引擎对业余爱好文件中的数据进行简单的显示。

WITH WITH HOBBY = "MyHobby"

我假设您已经创建了一个名为HOBBY的字典条目-可能是一个指向正确属性的D-type。

@CUSTOMERID

另一种假设是,您有一个D型字典条目,它指向业余爱好中具有@CUSTOMERID的属性。为了这个答案,我假设@CUSTOMERID是一个单一的值。这只是告诉LIST为每条记录显示这段信息

@CUSTOMERID.NAME

这是一个I-type字典,如果您尚未创建,则需要创建该字典。基本上,在字典项的属性2中,您将拥有类似于TRANS("CUSTOMER",@CUSTOMERID,2,"X")的内容。这告诉它读取在@CUSTOMERID中找到的当前业余爱好记录的ID的记录,并返回属性2(我假设属性2是存储客户名称的位置,根据需要进行更改。"X“告诉TRANS函数,如果找不到客户记录,则只返回一个空字符串。

票数 1
EN

Stack Overflow用户

发布于 2013-08-08 05:14:35

我认为你假设的比给予的要多。所提供的信息并不表明在两个方向上都有链接,只有爱好代码包含在CUSTOMER文件中。

考虑到提供的信息,这应该是可行的:

代码语言:javascript
复制
LIST CUSTOMER WITH @HOBBYID "MyHobby" NAME @HOBBYID

或者,如果要使用HOBBY而不是@HOBBYID进行比较/选择:

代码语言:javascript
复制
LIST CUSTOMER WITH EVAL "TRANS(HOBBY,@HOBBYID,HOBBY,'X')" = "MyHobby" NAME @HOBBYID

当然,如果您已经在CUSTOMER字典中创建了一个translate字典条目,可以用来代替使用'EVAL ...‘,那就更好了。子句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18086090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档