2014-10-15 3 views
0

У меня есть две таблицы. Я хочу обновить его другим. Я написал два запроса, чтобы показать вам результат. Вот мои два запросаКак обновить одну таблицу из другой таблицы на основе объединений и подзапросов

select PrjTermsID,InstNo,InstDesc,BlockID from ProjectPaymentTerms where BlockID=1 

select PlotBookingID,InstNo,InstDesc,PrjTermsID from PlotPaymentTerms where PlotBookingID in (select PlotBookingID from PlotBooking where PlotID in ( select PlotID from PlotMaster where AppartmentBlock=1))

и увидеть изображение для результатов enter image description here

Первая таблица содержит от 1 до 13 записей с InstNo и второй таблице имеет каждый PlotBookingID имеет 13 записей. (Каждый участок будет иметь 13 (все) условия оплаты?). Теперь я хочу обновить вторую таблицу PlotPaymentTerms с помощью первой таблицы с автогенерированным идентификатором. ЕСЛИ я пытаюсь использовать Inner join, это дает больше результатов. Как я могу написать запрос на обновление для обновления второй таблицы?

+0

почему вы обновление идентификаторов во второй таблице? –

+0

раньше не добавляли PrjTermsID во вторую таблицу. Теперь мы добавили эту вещь в мое приложение. Таким образом, прошлые записи пустые, поскольку я добавил, что поле недавнее во второй таблице –

ответ

1
update ppt 
set ppt.PrjTermsID = pp.PrjTermsID 
from PlotPaymentTerms ppt 
inner join ProjectPaymentTerms pp on ppt.InstNo = pp.InstNo and ppt.BlockID = 1 
inner join PlotBooking pb on ppt.PlotBookingID = pb.PlotBookingID 
inner join PlotMaster pm on pb.PlotID = pm.PlotID 
where pm.AppartmentBlock = 1 

, пожалуйста, проверьте это.

+0

Оно обновлено с неправильными идентификаторами :(Я думаю, что мы не должны использовать INNER JOIN. Он обновляется как чередующиеся строки с правильными идентификаторами, например 1, 3, 5 , 7, 9 ... являются правильными, а идентификаторы идентификаторов вставлены неправильно –

+0

не могли бы вы уточнить, что именно обновили? @Iam – Mukund

+0

@ Я могу, пожалуйста, проверить с помощью вышеуказанного запроса сейчас, я только что обновил ответ. – Mukund

0

Я не думаю, что это правильный способ. В любом случае это работает для меня.

update ppt set ppt.PrjTermsID = pp.PrjTermsID from PlotPaymentTerms ppt 
inner join ProjectPaymentTerms pp on ppt.InstNo = pp.InstNo and pp.BlockID=1 
and ppt.PlotBookingID in(select PlotBookingID from PlotBooking where PlotID in ( select PlotID from PlotMaster where AppartmentBlock=1)) 

Thnaks к @Mukund

+0

внутреннее соединение всегда лучше, чем предложение in.Это выполняется быстро.Я не понимаю, как он не обновляется даже число строк.Если он работает на нечетные, то он должен работать даже слишком, b/c логика такая же. @Iam – Mukund

Смежные вопросы