my $id = 1; my $data = {}; my $table1_results = $dbh->selectall_arrayref('SELECT field1 FROM table1 WHERE id = ?', {Slice => {}}, $id); foreach my $field1 (@$table1_results) { $data->{$id}->{$table1_results->{field_of_interest}} = undef; my $table2_results = $dbh->selectall_arrayref('SELECT field2 FROM table2 WHERE field1 = ?', {Slice => {}}, $field1->{field1}); foreach my $field2 (@$table2_results) { $data->{$id}->{$table1_results->{field_of_interest}}->{$table2_results->{field_of_interest}} = undef; ... } }