我需要在SQL语句中更改什么

时间:2014-10-08 11:29:23

标签: sql sql-server join sql-update

我的SQL语句还没有工作。

在这里,我向您展示实际声明:

 UPDATE [sysdba].[Z_SKM]
SET Branche_Firma_val = (select  Text from ZDEFPROPERTY
                        join ZSYSPROPERTY
                        on ZDEFPROPERTY.ZDEFPROPERTYID=ZSYSPROPERTY.ZDEFPROPERTYID
                        where  ZSYSPROPERTY.SYSPROPERTYID =branche_firma_key and Valuetype = 'branch')

WHERE branche_firma_key is not  null

说明: 我有一个名为Z_SKM的表,它有两个重要的列1. Branche_firma_val; 2. Branche_firma_key

如果branche_firma_key不为null(因此用一个键填充),我的目标是使用Zdef属性中的Text填充Branche_firma_val。 在ZDEFPROPERTY中是Text列 在ZSYSPROPERTY中是ID(键)列 这就是我加入他们的原因。 现在我有一行值+键

如果我让它运行语句,它会对=运算符的许多结果说。我想select的结果会返回sysproperty = Firma_key的所有文本。 我的问题是,我不知道我怎么能告诉它我需要每行另一把钥匙..

你知道我的意思吗?

我希望如此

干杯史蒂文

编辑:

实施例

Z_SKM

Branche_firma_Key = 221

branche_firma_val = NULL


与ZSYSPROPERTY联合的ZDEFPROPERTY

文字="推销员"

syspropertyid =" 221"


解决方案应该是:

branche_firma_key = 221

branche_firma_val =推销员


每一行的问题都是Brnache_firma_key不同的问题。 我想我需要一个解决方案来制作一个iterativ sql语句。

1 个答案:

答案 0 :(得分:0)

这是您的查询:

UPDATE [sysdba].[Z_SKM]
    SET Branche_Firma_val = (select Text
                             from ZDEFPROPERTY join
                                  ZSYSPROPERTY
                                  on ZDEFPROPERTY.ZDEFPROPERTYID = ZSYSPROPERTY.ZDEFPROPERTYID
                             where ZSYSPROPERTY.SYSPROPERTYID = branche_firma_key and
                                   Valuetype = 'branch'
                            )
    WHERE branche_firma_key is not  null;

相关子查询返回多行。您需要在匹配的行中进行选择。这是一种方式:

UPDATE [sysdba].[Z_SKM]
    SET Branche_Firma_val = (select max(Text)
                             from ZDEFPROPERTY join
                                  ZSYSPROPERTY
                                  on ZDEFPROPERTY.ZDEFPROPERTYID = ZSYSPROPERTY.ZDEFPROPERTYID
                             where ZSYSPROPERTY.SYSPROPERTYID = branche_firma_key and
                                   Valuetype = 'branch'
                            )
    WHERE branche_firma_key is not  null;