Вот фрагмент SQL, который я использую для веб-приложения на основе Perl.У меня есть несколько запросов, и у каждого есть несколько образцов, и у каждого есть статус.Этот кусок кода предназначен для обновления таблицы для каждого accession_analysis, который разделяет все эти поля для каждого присоединения в запросе.
UPDATE accession_analysis
SET analysis_id = ? ,
reference_id = ? ,
status = ? ,
extra_parameters = ?
WHERE analysis_id = ?
AND reference_id = ?
AND status = ?
AND extra_parameters = ?
and accession_id is (
SELECT accesion_id
FROM accessions
where request_id = ?
)
Я изменил таблицы так, чтобы была таблица состояния для accession_analysis, поэтому при обновлении я обновляю и accession_analysis, и accession_analysis_status, у которого есть status, status_text и id accession_analysis, который являетсяне нулевая переменная auto_increment.
У меня нет четкого представления о том, как изменить этот код, чтобы разрешить это.Мой первый проход захватил все образцы и прошел через них, затем отфильтровал все поля и обновил.Мне это не понравилось, потому что у меня было много соединений с короткими командами SQL, что, как я понял, было плохо, но я не могу не думать, что единственный способ действительно сделать это - вернуться к циклу в Perl, содержащему две более простыеОператоры SQL.
Есть ли способ сделать это в SQL, который, с моей относительной неопытностью в SQL, я просто не вижу?