2013-06-27 262 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