Sql 进度-联接表

Sql 进度-联接表,sql,join,progress-4gl,openedge,progress-db,Sql,Join,Progress 4gl,Openedge,Progress Db,在向数据库中创建记录之前,我正在添加一些验证检查,我需要满足以下条件: 查找fieldinfo,其中fieldinfo.fieldno=5052 查找codetable,其中codetable.tableno=fieldinfo.tableno和codetable.code=tt-employee.costcode tt employee是一个临时表,其余的直接来自db 因为我是一个新手,所以我有点困惑——应该使用连接吗?如果是的话,知道怎么做吗?谢谢大家! 试试看: IF expressio

在向数据库中创建记录之前,我正在添加一些验证检查,我需要满足以下条件:

查找fieldinfo,其中fieldinfo.fieldno=5052 查找codetable,其中codetable.tableno=fieldinfo.tableno和codetable.code=tt-employee.costcode

tt employee是一个临时表,其余的直接来自db

因为我是一个新手,所以我有点困惑——应该使用连接吗?如果是的话,知道怎么做吗?谢谢大家!

试试看:

IF  expression  THEN   {block/statement}    [ELSE   {block/statement}]

如果有帮助,请参阅。

尝试:

IF  expression  THEN   {block/statement}    [ELSE   {block/statement}]

如果有帮助,请参阅。

尝试:

IF  expression  THEN   {block/statement}    [ELSE   {block/statement}]

如果有帮助,请参阅。

尝试:

IF  expression  THEN   {block/statement}    [ELSE   {block/statement}]


如果有帮助的话,

这里有一些事情要考虑:

验证

您可以在逻辑或数据库本身中添加验证。如何做到这一点取决于您和系统的外观。如果数据库中已经存在验证,则可能需要将其保留在数据库中

但如果这不是客户/老板等的要求,我个人会将所有验证放在业务逻辑中,而不是模式中

如果要使用数据库驱动的方法,请查看数据库手册中的“验证”

加入

另一个问题是您的查询是错误的。Progress确实支持联接查询,但不支持使用
FIND
-语句

请执行以下操作以保留查找:

FIND fieldinfo NO-LOCK WHERE fieldinfo.fieldno = 5052 NO-ERROR.
IF AVAILABLE fieldinfo THEN DO:
  FIND FIRST codetable NO-LOCK WHERE codetable.tableno = fieldinfo.tableno 
                                 AND codetable.code    = tt-employee.costcode NO-ERROR.
  IF AVAILABLE codetable THEN DO:
    /* Do something */
  END.
END.
您还可以将其更改为带有联接的
FOR
-语句

FOR EACH fieldinfo NO-LOCK WHERE fieldinfo.fieldno = 5052, 
  FIRST codetable NO-LOCK WHERE codetable.tableno = fieldinfo.tableno 
                           AND codetable.code    = tt-employee.costcode:
  /* Do something */
END.

这里有一些事情要考虑:

验证

您可以在逻辑或数据库本身中添加验证。如何做到这一点取决于您和系统的外观。如果数据库中已经存在验证,则可能需要将其保留在数据库中

但如果这不是客户/老板等的要求,我个人会将所有验证放在业务逻辑中,而不是模式中

如果要使用数据库驱动的方法,请查看数据库手册中的“验证”

加入

另一个问题是您的查询是错误的。Progress确实支持联接查询,但不支持使用
FIND
-语句

请执行以下操作以保留查找:

FIND fieldinfo NO-LOCK WHERE fieldinfo.fieldno = 5052 NO-ERROR.
IF AVAILABLE fieldinfo THEN DO:
  FIND FIRST codetable NO-LOCK WHERE codetable.tableno = fieldinfo.tableno 
                                 AND codetable.code    = tt-employee.costcode NO-ERROR.
  IF AVAILABLE codetable THEN DO:
    /* Do something */
  END.
END.
您还可以将其更改为带有联接的
FOR
-语句

FOR EACH fieldinfo NO-LOCK WHERE fieldinfo.fieldno = 5052, 
  FIRST codetable NO-LOCK WHERE codetable.tableno = fieldinfo.tableno 
                           AND codetable.code    = tt-employee.costcode:
  /* Do something */
END.

这里有一些事情要考虑:

验证

您可以在逻辑或数据库本身中添加验证。如何做到这一点取决于您和系统的外观。如果数据库中已经存在验证,则可能需要将其保留在数据库中

但如果这不是客户/老板等的要求,我个人会将所有验证放在业务逻辑中,而不是模式中

如果要使用数据库驱动的方法,请查看数据库手册中的“验证”

加入

另一个问题是您的查询是错误的。Progress确实支持联接查询,但不支持使用
FIND
-语句

请执行以下操作以保留查找:

FIND fieldinfo NO-LOCK WHERE fieldinfo.fieldno = 5052 NO-ERROR.
IF AVAILABLE fieldinfo THEN DO:
  FIND FIRST codetable NO-LOCK WHERE codetable.tableno = fieldinfo.tableno 
                                 AND codetable.code    = tt-employee.costcode NO-ERROR.
  IF AVAILABLE codetable THEN DO:
    /* Do something */
  END.
END.
您还可以将其更改为带有联接的
FOR
-语句

FOR EACH fieldinfo NO-LOCK WHERE fieldinfo.fieldno = 5052, 
  FIRST codetable NO-LOCK WHERE codetable.tableno = fieldinfo.tableno 
                           AND codetable.code    = tt-employee.costcode:
  /* Do something */
END.

这里有一些事情要考虑:

验证

您可以在逻辑或数据库本身中添加验证。如何做到这一点取决于您和系统的外观。如果数据库中已经存在验证,则可能需要将其保留在数据库中

但如果这不是客户/老板等的要求,我个人会将所有验证放在业务逻辑中,而不是模式中

如果要使用数据库驱动的方法,请查看数据库手册中的“验证”

加入

另一个问题是您的查询是错误的。Progress确实支持联接查询,但不支持使用
FIND
-语句

请执行以下操作以保留查找:

FIND fieldinfo NO-LOCK WHERE fieldinfo.fieldno = 5052 NO-ERROR.
IF AVAILABLE fieldinfo THEN DO:
  FIND FIRST codetable NO-LOCK WHERE codetable.tableno = fieldinfo.tableno 
                                 AND codetable.code    = tt-employee.costcode NO-ERROR.
  IF AVAILABLE codetable THEN DO:
    /* Do something */
  END.
END.
您还可以将其更改为带有联接的
FOR
-语句

FOR EACH fieldinfo NO-LOCK WHERE fieldinfo.fieldno = 5052, 
  FIRST codetable NO-LOCK WHERE codetable.tableno = fieldinfo.tableno 
                           AND codetable.code    = tt-employee.costcode:
  /* Do something */
END.

为我们提供您的schemaWell uhm模式相当大,但基本上fieldinfo和codetable是数据库中的表,tt employee是临时表Progress 4gl不是SQL--您确定要与此问题关联的SQL标记吗?为我们提供您的schemaWell uhm模式相当大,但基本上fieldinfo和codetable是db和tt employee中的表是临时表Progress 4gl不是SQL--您确定需要与此问题相关联的SQL标记吗?为我们提供您的schemaWell uhm该schema相当大,但基本上fieldinfo和codetable是db中的表,tt employee是临时表Progress 4gl不是SQL--您确定需要吗与此问题相关联的sql标记?为我们提供您的schemaWell uhm该模式相当大,但基本上fieldinfo和codetable是数据库中的表,tt employee是临时表Progress 4gl不是sql--您确定要与此问题相关联的sql标记吗?干杯,伙计,但我正在努力解决这个表达式“codetable.tableno=fieldinfo.tableno”需要使用响应第一个条件的fieldinfo,然后该条件的codetable需要与tt-employee.costCode匹配您可以访问以获取更多信息。干杯,伙计,但我正在努力使用“codetable.tableno=fieldinfo.tableno”的表达式“需要使用响应第一个条件的fieldinfo,然后该条件的codetable需要与tt-employee.CostCode匹配您可以访问以获取更多信息。干杯,伙计,但我正在努力使用“codetable.tableno=fieldinfo.tableno”的表达式”需要使用响应第一个条件的字段信息,然后该字段中的代码表需要与tt-employee.COSTCODE匹配您可以访问了解更多信息