2014-02-05 5 views
0

У меня есть инструкция SQL, ниже которой извлекаются данные из нескольких таблиц, так как можно видеть, что идентификатор главы является нулевым в tblquestions, я хотел бы знать, как я обновляю таблицу так, чтобы она показывает главу идентификатор, который тянет из с соответствующей секции идентификатора в таблице вопроса, в свою очередьupdate sql table with multi-jojn

Я хочу, чтобы обновить tblQuestions, с chapterId где секция Id приравнивает, что секции chapterid

select chap.chapterID , sec.sectionID, q.ChapterId , q.sectionID from tblChapters as chap 
left join tblSections as sec on chap.chapterID = sec.chapterID 
left join tblQuestions as q on chap.subjectID = q.subjectID 
where chap.subjectID = 363 
group by chap.chapterID, sec.sectionID, q.ChapterId , q.sectionID 

OutPut

chapterID sectionID ChapterId sectionID 
22266  4869  NULL   4869 

TBL глава

chapterID 
subjectID 
chapterNo 
Title 
cssID 
OldChapterId 

TBL секции

sectionID 
chapterID 
sectionNO 
Title 
cssID 
oldSecId 

tblQuestions

questionID 
QuestionType 
QuestionNo 
question 
A 
B 
C 
D 
correctAnswer 
explanation 
bookRef 
sectionID 
subjectID 
syllabusRef 
noChapSec 
ChapterId 
oldChapIf 
OldSubID 
oldSecId 
+0

вы не хотите, чтобы включить те результаты, где глава ID является нулевым в tblquestions ..right ?? – Pranav

+0

да, я хотел бы добавить его там – user3086751

+0

, пожалуйста, укажите схему таблиц –

ответ

0

Вы можете попробовать, как это: -

update q 
set q.ChapterId=t.chapterID 
from tblQuestions q Join (
select chap.chapterID , sec.sectionID, q.ChapterId , q.sectionID from tblChapters as chap 
left join tblSections as sec on chap.chapterID = sec.chapterID 
left join tblQuestions as q on chap.subjectID = q.subjectID 
where chap.subjectID = 363 
group by chap.chapterID, sec.sectionID, q.ChapterId , q.sectionID)t on t.sectionID=q.sectionID 
+0

Запрос работает нормально, но я хотел бы обновить headid в таблице вопросов, где q.sectionid равен sec. sectionId – user3086751

+0

это не будет работать, так как он не обновляет таблицу на основе идентификатора раздела – user3086751

+0

извините .. теперь см. обновленный ответ .. – Pranav

0

Попробуйте это ....

UPDATE tblQuestions q 
    SET q.ChapterId = (

    SELECT sec .ChapterId 
    from tblSections sec 
    INNER JOIN tblChapters chap on chap.chapterID = sec.chapterID 
    WHERE chap.subjectID = q.subjectID 

    ) 

    WHERE q.ChapterId IS NULL 
+0

не будет работать, поскольку он не добавит к id главы, где у sectionid есть идентификатор главы – user3086751

0
UPDATE q SET q.ChapterID = chap.ChapterID 
FROM tblQuestions q 
INNER JOIN tblChapters chap 
ON chap.subjectID = q.subjectID 
WHERE q.ChapterId IS NULL