Здесь я только описываю необходимые поля для каждой таблицы
(Эта основная таблица используется для хранения списка импорта)
(Это временная таблица, используемая для хранения данных перед обработкой. После обработки строки перемещаются в таблицу tblDonation. Некоторые строки останутся в этой таблице со статусом = «Discarded» и Notes = «Причина отклонения». На начальном этапе состояния устанавливается как «NEW»)
Мне нужен запрос
Чтобы обновить строки в таблице sysImportDonationCS с помощью status = «Discarded» и Notes = «Reason», которые соответствуют sysImportDonationCS.GiftID и tblDonation.GiftNumber для одного и того же клиента (один и тот же клиент является важной точкой и подключен через sysimport). Я разобрался с запросом, который работает, но сейчас он слишком трудоемкий.
запрос
UPDATE `sysimportdonationcs` as d INNER JOIN
(SELECT donation.internalTempID as tID from sysimportdonationcs as donation
INNER JOIN sysimport as s1 ON donation.`internalImportID` = s1.internalImportID INNER JOIN tbldonation ON donation.Gift_ID = tbldonation.giftNumber
INNER JOIN sysimport as s2 ON tbldonation.internalImportID = s2.internalImportID
where s1.clientID = S2.clientID AND donation.status = 'NEW' AND donation.internalImportID = $import_id order by tID limit 10) temp on temp.tID = d.internalTempID
SET d.status = 'Discarded', d.notes = 'The job type was incremental and a matching record found in the tblDonation table.' ;
Некоторый статус
Мне нужно оптимизировать вышеуказанный запрос, чтобы он работал быстрее.
Задача ещё не решена.
Других решений пока нет …