【问题标题】:unidata command query data from two filesunidata 命令从两个文件中查询数据
【发布时间】:2013-08-08 05:35:49
【问题描述】:

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

CUSTOMER

    -@CUSTOMERID
    -NAME
    -@HOBBYID (multi-valued, virtual attribute)

HOBBY

    -@HOBBYID
    -HOBBY

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

期待解决方案。谢谢。

【问题讨论】:

  • 这里的@CUSTOMERID 是多值的吗?或者“HOBBY”文件的结构如何让您每个爱好拥有多个客户。另外,这是关于 U2 的 UniJPA 驱动程序的问题吗?如果是这样,请发送电子邮件至 u2askus@rs.com,因为产品经理很乐意与您讨论您对它的使用情况。谢谢!

标签: jpa openjpa u2 unidata


【解决方案1】:

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

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

让我解释一下。

当您查看多对一关系时,如果您从“多”表开始,则可以使用虚拟字典项来执行此操作(我知道,违反直觉吗?)

LIST HOBBY

这里我们只是指示引擎对来自 HOBBY 文件的数据进行简单的显示。

WITH WITH HOBBY = "MyHobby"

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

@CUSTOMERID

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

@CUSTOMERID.NAME

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

【讨论】:

  • 我真的很喜欢您在示例中使用的@filename 样式。我可能会建议 @filename.dictname 的结构对任何 TRANS 类型的字典都很有用。对于您上面使用的示例,我喜欢 @CUSTOMER.ID@CUSTOMER.NAME。它立即清楚地表明它是 TRANS 类型,它从哪个文件访问数据,以及该文件的属性是什么。
【解决方案2】:

丹,

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

鉴于提供的信息,这应该可行:

LIST CUSTOMER WITH @HOBBYID "MyHobby" NAME @HOBBYID

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

LIST CUSTOMER WITH EVAL "TRANS(HOBBY,@HOBBYID,HOBBY,'X')" = "MyHobby" NAME @HOBBYID

当然,如果您在CUSTOMER 字典中创建了一个翻译字典项,可以用来代替使用“EVAL ...”子句,那会更好。

【讨论】:

  • 嗨,rbl,我的回答是在他们澄清编辑之前。如果您查看问题历史记录,您会发现结构与以前略有不同。请注意,提问者建议 @HOBBYID 是多值的,因此 TRANS 不适用于该字段。不过,尚不清楚在他们的具体情况下“虚拟属性”是什么意思,因此澄清这一点可能会再次改变答案。
  • 大家好,很抱歉这个问题不清楚。我正在使用 u2jpa 驱动程序。我想知道当我“列出客户”时,它可以返回客户信息(@CUSTOMERID、NAME、@HOBBYID、HOBBY)的查询。
  • @Dan McGrath,没有冒犯的意思,我没有看到历史。我使用的是 Universe,而不是 unidata,所以也许 TRANS 在那里的功能不同,但在 Universe 上,它在多值字段上工作得很好。
猜你喜欢
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 2020-07-25
  • 1970-01-01
相关资源
最近更新 更多