【问题标题】:Progress 4GL queries进度 4GL 查询
【发布时间】:2013-08-28 23:23:19
【问题描述】:

我是这门语言的新手,在理解查询时遇到了一些问题。

例如:

有 2 个数据库表:仓库、产品。所以每个仓库可以有多个产品,产品可以存放在不同的仓库中。

Query:
   for each warehouse,
       each product:
   display warehouse.name, product.prodcode.
end.

显示会喜欢

warehousename   productcode
awarehouse       SKA-301

所以对于这个结果,这些列是否显示完全独立的结果,例如。 SKA-301 产品可能不在意识中。或者它会在意识中展示产品?如果产品和仓库没有相关字段怎么办?

请帮助我。谢谢。

【问题讨论】:

  • 注意 - 逗号“,”不属于显示语句中的字段之间。

标签: progress-4gl openedge


【解决方案1】:

在您展示的代码中,您将获得每次仓库迭代的每个产品。

要获取特定于特定仓库的产品,您需要将 WHERE 条件添加到联接的第二个子句。假设您有一个适合此目的的 product.warehouseName 字段......

for each warehouse no-lock,
  each product no-lock where product.warehouseName = warehouse.name:

  display
    warehouse.name
    product.prodcode
  .

end.

(如果 product.warehouseName 上没有索引,这将非常效率低下。)

【讨论】:

  • 您可以在每个语句的上方添加“查询:”是一个标签,例如对 NEXT 很有用。不确定您是否真的可以(显然不应该)将该关键字用作标签。
  • 其实“QUERY”不能作为循环的标签。
【解决方案2】:

您的查询是此扩展版本的精简版

for each warehouse:
   for each product:
      display warehouse.name, product.prodcode. 
   end.
end.

他们都实现了同样的目标。我建议您开始扩展查询,一旦您了解了关系,然后回到紧凑的每个版本

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 2015-09-15
    • 2021-10-09
    • 2012-05-07
    • 2010-09-27
    • 2012-03-19
    • 2015-02-22
    • 1970-01-01
    相关资源
    最近更新 更多