for my $i ( 0 .. $#results ) {
####
for my $element ( @results ) {
####
# Build a lookup table for "left_table;right_table" => [ join columns ]
my %link_columns = map {
$_->[0] . ";" . $_->[1] => [ $_->[2], $_->[3] ],
$_->[1] . ";" . $_->[0] => [ $_->[3], $_->[2] ]
} @links;
my @results = find_joins( 'apple' => 'owl' );
die "No path from 'apple' to 'owl'"
unless @results;
my $shortest_path = $results[0];
my $start = shift @$shortest_path;
print "SELECT * FROM ";
print "$start\n";
my $left = $start;
for my $table (@$shortest_path) {
my $key = "$left;$table";
print "-- $key\n";
my $join_cols = $link_columns{$key};
print " inner join $table on $join_cols->[0] = $join_cols->[1]\n";
$left = $table;
};