diff --git a/misc-scripts/sql2html.pl b/misc-scripts/sql2html.pl index 068c33e91873cf90bc3301cce8dea18f8dfbbf39..f29947cbd57f7a1c0409b6e79b491a2d668a4088 100644 --- a/misc-scripts/sql2html.pl +++ b/misc-scripts/sql2html.pl @@ -884,7 +884,7 @@ sub add_examples { $sql_table = get_example_table($sql,$table,$nb); } if (defined($sql)) { - foreach my $word (qw(SELECT FROM WHERE LIMIT DESC ORDER)) { + foreach my $word (qw(SELECT DISTINCT CONCAT FROM LEFT JOIN USING WHERE LIMIT DESC ORDER GROUP)) { $sql =~ s/$word /$word /i; } } @@ -1010,14 +1010,26 @@ sub get_example_table { $sql =~ /select\s+(.+)\s+from/i; my $cols = $1; my @tcols; - if ($cols eq '*') { - my $table_cols = $db_handle->selectall_arrayref(qq{SHOW COLUMNS FROM $table}); - foreach my $col (@$table_cols) { - push(@tcols,$col->[0]); + + foreach my $col (split(',',$cols)) { + + # Columns selection like the expressions "table.*" or "*" + my $table_name; + $table_name = $table if ($cols eq '*'); + $table_name = $1 if ($col =~ /(\S+)\.\*/ and !defined($table_name)); + if (defined($table_name)) { + my $table_cols = $db_handle->selectall_arrayref(qq{SHOW COLUMNS FROM $table_name}); + foreach my $col (@$table_cols) { + push(@tcols,$col->[0]); + } + next; } - } else { - $cols =~ s/ //g; - @tcols = split(',',$cols); + + # Check for alias + $col = $1 if ($col =~ /\s+as\s+(\S+)$/i); + + $col =~ s/ //g; + push(@tcols,$col); } my $results = $db_handle->selectall_arrayref($sql);