2013-06-27 264 views
2

我有一个问题,我已经添加了一列到我的数据库表中的一个,现在我需要用数据填充此列。SQL嵌套循环

下面是表:

表QUESTIONNAIRE_QUESTIONS 的列:

ID, 
QUESTION_NUMBER, 
PARENT_QUESTION_ID, 
PARENT_QUESTIONNAIRE_ID, 
QUESTION_CODE 

表问卷 的列:

ID, 
INTRODUCTION 

我首先要做的是找到所有独特的QU ESTIONNAIRE.ID,对于每个需要查找所有QUESTIONNAIRE_QUESTIONS.ID并将此ID设置为PARENT_QUESTIONNAIRE_ID并将QUESTION_CODE设置为QUESTION_CODE = QUESTION_NUMBER * 100的用户。

然后,在移动到下一个QUESTIONNAIRE_ID之前,我需要找到具有当前QUESTIONNAIRE_QUESTIONS.ID作为PARENT_QUESTION_ID所有QUESTIONNAIRE_QUESTIONS.ID并设置QUESTION_CODE为 QUESTION_CODE =(父母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 

注意,它可以是 “孩子问题” 感谢更多的水平!

+0

请提供样本数据 – peterm

+0

提供样本数据! – byron

回答

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

+0

非错字,请参阅上述示例数据。您的示例不会使用QUESTION_CODE更新“子问题”,如“300.100” – byron