2

我有一个问题,我在我的一个数据库表中添加了一个列,现在我需要用数据填充这个列。

以下是表格:

包含列的QUESTIONNAIRE_QUESTIONS表:

ID,
QUESTION_NUMBER,
PARENT_QUESTION_ID,
PARENT_QUESTIONNAIRE_ID,
QUESTION_CODE

带有列的QUESTIONNAIRE表:

ID,
INTRODUCTION

我首先需要做的是找到所有唯一的 QUESTIONNAIRE.ID,并且对于每一个我需要找到所有具有此 ID 为 PARENT_QUESTIONNAIRE_ID 的 QUESTIONNAIRE_QUESTIONS.ID 并将 QUESTION_CODE 设置为 QUESTION_CODE=QUESTION_NUMBER*100。

然后,在继续下一个 QUESTIONNAIRE_ID 之前,我需要找到所有具有当前 QUESTIONNAIRE_QUESTIONS.ID 为 PARENT_QUESTION_ID 的 QUESTIONNAIRE_QUESTIONS.ID 并将 QUESTION_CODE 设置为 QUESTION_CODE=(parents question_code)+'.'+QUESTION_CODE.QUESTION_NUMBER*100。

如何执行这个复杂的嵌套循环?好像我必须使用几个循环?

样本数据:

QUESTIONNAIRES
ID
1869359
1876176


QUESTIONNAIRE_QUESTIONS
ID         QUESTION_NUMBER     PARENT_QUESTIONNAIRE_ID   PARENT_QUESTION_ID  QUESTION_CODE
1869360            1                   1869359                 null              null
1869362            2                   1869359                 null              null
1869364            3                   1869359                 null              null
1869367            1                    null                  1869364            null
1869369            1                   1876176                 null              null
1869371            2                   1876176                 null              null
1869372            3                   1876176                 null              null
1869374            4                   1876176                 null              null
1869377            1                    null                  1869372            null

在我希望它看起来像这样之后:

QUESTIONNAIRE_QUESTIONS
ID         QUESTION_NUMBER     PARENT_QUESTIONNAIRE_ID   PARENT_QUESTION_ID  QUESTION_CODE
1869360            1                   1869359                 null              100
1869362            2                   1869359                 null              200
1869364            3                   1869359                 null              300
1869367            1                    null                  1869364          300.100
1869368            1                    null                  1869367          300.100.100
1869369            2                    null                  1869367          300.100.200
1869370            1                   1876176                 null              100
1869371            2                   1876176                 null              200
1869372            3                   1876176                 null              300
1869374            4                   1876176                 null              400
1869377            1                    null                  1869371          200.100

请注意,它可以是更多级别的“儿童问题”谢谢!

4

1 回答 1

0
UPDATE QUESTIONNAIRE_QUESTIONS
SET QUESTION_CODE = (QUESTION_NUMBER * 100)
WHERE QUESTIONNAIRE_QUESTIONS.ID IN (SELECT DISTINCT QUESTIONNAIRE.ID
                                     FROM QUESTIONNAIRE, QUESTIONNAIRE_QUESTIONS
                                     WHERE QUESTIONNAIRE_QUESTIONS.ID = PARENT_QUESTION_ID)

不太确定第二个问题。那是错字吗?QUESTION_CODE.QUESTION_NUMBER*100

于 2013-06-27T08:54:36.080 回答