in reply to Keeping associated data after entering into a hash

If I'm understanding you correctly, something like the following might work. It would give you access to the data from the rows with the same ID in the other query.

my %ids; # ... $sth->bind_columns( undef, \$orig_service_id, \$orig_stop, $depart_ori +g); while ($sth->fetch()) { push @{$ids{$orig_service_id}}, { stop => $orig_stop, depart => $depart_orig, # ... }; } # ... $sth->bind_columns( undef, \$dest_service_id, \$dest_stop, $depart_des +t); while ($sth->fetch()) { if (exists $ids{$dest_service_id}) { print "ID $dest_service_id:\n"; my $i = 0; # counter (only needed for demo purposes) for my $orig ( @{$ids{$dest_service_id}} ) { # $orig is a hashref to origin data printf "matching origin row #%d:\n", ++$i; printf " orig_stop = %s\n", $orig->{stop}; printf " depart_orig = %s\n", $orig->{depart}; # ... } } }