The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SQL::Abstract::Plugin::TableAlias - automagical table aliasing

VERSION

Version 0.04

SYNOPSIS

        use SQL::Abstract;

        my $sql = SQL::Abstract->new->plugin('+TableAlias');
                
        my ($stmt, @bind) = $sql->select({
                select => [ qw/one two three/, [qw/four five/], [qw/six seven eight/] ],
                from => [
                        "already",
                        -join => [
                                aware => on => { one => "one" }
                        ],
                        -join => {
                                on => { two => { ">" => "other" } },
                                to => "first",
                                type => "left"
                        }
                ],
                where => {
                        five => "A",
                        six => "B",
                        nine => "C"
                },
                order_by => [
                        qw/one/,
                        { -asc => 'four' },
                        { -desc => [qw/three seven/] }
                ],
        });

produces:

        SELECT 
                already.one,
                already.two,
                already.three,
                aware.four,
                aware.five,
                first.six,
                first.seven,
                first.eight 
        FROM already AS already 
                JOIN aware AS aware ON already.one = aware.one 
                LEFT JOIN first AS first ON aware.two > first.other 
        WHERE ( first.six = ? AND aware.five = ? AND already.nine = ? ) 
        ORDER BY already.one, aware.four ASC, already.three DESC, first.seven DESC

setting talias:

        my ($stmt, @bind) = $sql->select({
                talias => [qw/n i f/],
                select => [ qw/one two three/, [qw/four five/], [qw/six seven eight/] ],
                from => [
                        "already",
                        -join => [
                                aware => on => { one => "one" }
                        ],
                        -join => {
                                on => { two => { ">" => "other" } },
                                to => "first",
                                type => "left"
                        }
                ],
                where => {
                        five => "A",
                        six => "B",
                        nine => "C"
                },
                order_by => [
                        qw/one/,
                        { -asc => 'four' },
                        { -desc => [qw/three seven/] }
                ],
        });

produces:

        SELECT 
                n.one,
                n.two,
                n.three,
                i.four,
                i.five,
                f.six,
                f.seven,
                f.eight 
        FROM already AS n 
                JOIN aware AS i ON n.one = i.one 
                LEFT JOIN first AS f ON i.two > f.other 
        WHERE ( f.six = ? AND i.five = ? AND n.nine = ? ) 
        ORDER BY n.one, i.four ASC, n.three DESC, f.seven DESC

you know who you are.

DESCRIPTION

This module is an extension of the SQL::Abstract::Plugin::ExtraClauses plugin, it's objective is to assist with the aliasing of tables.

AUTHOR

LNATION, <email at lnation.org>

BUGS

Please report any bugs or feature requests to bug-sql-abstract-plugin-tablealias at rt.cpan.org, or through the web interface at https://rt.cpan.org/NoAuth/ReportBug.html?Queue=SQL-Abstract-Plugin-TableAlias. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc SQL::Abstract::Plugin::TableAlias

You can also look for information at:

ACKNOWLEDGEMENTS

LICENSE AND COPYRIGHT

I've not forgotten.

This software is Copyright (c) 2022 by LNATION.

This is free software, licensed under:

  The Artistic License 2.0 (GPL Compatible)