비슷한 경우 나는 보통 관련 테이블에서 검색을 수행합니다. 귀하의 경우 두 결과 소스 : 표 1 및 표 2이 있습니다. table1은 테이블 테이블 2 (대부분 가능)과 관계가 있습니다. 이름은 2 테이블 2입니다. 이제이 관계를 사용하여 표 2에서 검색을 수행하십시오 표 2.
my $resultset = $schema->resultset('table1')->search_rs(
{
me.field3 => table2.field3,
table2.field2 => {'!=', '' },
table2.field2 > 0
},
{
'join' => 'table2',
'select' => ['me.field1', 'me.field4', 'table2.field2', 'me.field4'/'table2.field2' ],
'as' => ['field1','field4', 'field2', 'division_result']
}
);
while (my $this_res_row = $resultset->next) {
## Presuming somefunc is a perl subroutine
$this_res_row->update({ field1 => somefunc($this_res_row->get_column('division_result')) });
}
은 어쩌면, 나는 당신이 하나의 dbic 갱신() 문에서 원하는 작업을 수행 할 수 없습니다 생각 당신이 올 한 솔루션입니다. 불행히도 각 update() 문은 데이터베이스에 별도로 기록됩니다.
는 그런데, 나는 당신이 이미 ID 필드를 통해 수행해야, FIELD3를 통해 같은 테이블에 두 번째 조합을 따 좋은 아이디어라고 생각하지 않습니다. 왜 다른 걸 필요로하니?
그리고 나는 데이터베이스 트리거를 사용하여 코드를 구현하는 것이 더 좋은 아이디어라고 생각합니다.
코드를 테스트하지 않았으므로 약간의 실수가있을 수 있지만 원하는 것을 얻는 방법에 대한 아이디어는 파악해야합니다.
다른 방법으로 구현해야하므로 (즉, resultset-> search를 수행 한 다음 각 행을 개별적으로 업데이트해야 함) 원본 코드가 더 이상 필요하지 않지만 체인을 통해 결합 검색을 구현하려고했습니다 업데이트로 보내지 만, MySQL은 where 절에서 필드를 업데이트하려고하고 있다고 불평합니다. –