go to: HOME, EXAMPLES or CHANGELOG
EXTENDED EXAMPLES
This data consists in the list of test in 't/testSQL.t'
The test run two differnts context. The first use an "Aliases Table" as contents tables. The second does not use an "Aliases Table" (no aliases available).
Glossary
fld_realX Field's realname.
fld_aliasX Field's alias name.
fld_noalias Field without alias name.
tab_realX Table's realname.
tab_aliasX Table's alias name.
tab_noalias Table without alias name.
bad_alias Table without alias and not in table list.
Tests with "Aliases Table"
Aliases Table Definition
REMEMBER: The translation depends of two information, the table name and the field name: Correct field name and wrong table name will not be translated. Correct table name and wrong field name will not be translated.
$mymod = new SQL::SimpleOps
(
...
tables =>
{
tab_alias1 =>
{
name => 'tab_real1',
cols =>
{
fld_alias1 => 'fld_real1',
fld_alias2 => 'fld_real2',
fld_aliasX => 'fld_realX',
},
},
tab_alias2 =>
{
name => 'tab_real2',
cols =>
{
fld_alias1 => 'fld_real1',
fld_alias2 => 'fld_real2',
fld_aliasY => 'fld_realY',
},
},
tab_alias3 =>
{
name => 'tab_real3',
},
},
...
);
DELETE COMMANDS
Delete( table => "tab_noalias", force => 1 )
returns: DELETE FROM tab_noalias
Delete( table => "tab_alias1", force => 1 )
returns: DELETE FROM tab_real1
Delete( table => "tab_real1", force => 1 )
returns: DELETE FROM tab_real1
Delete( table => "tab_alias1", force => 1 )
returns: DELETE FROM tab_real1
Delete( table => "tab_noalias", where => [ "fld_alias1" => 1 ] )
returns: DELETE FROM tab_noalias WHERE fld_alias1 = '1'
Delete( table => "tab_alias1", where => [ "fld_alias1" => "value1" ] )
returns: DELETE FROM tab_real1 WHERE fld_real1 = 'value1'
Delete( table => "tab_real1", where => [ "fld_alias1" => "value1" ] )
returns: DELETE FROM tab_real1 WHERE fld_real1 = 'value1'
Delete( table => "tab_alias1", where => [ "fld_noalias1" => 1 ] )
returns: DELETE FROM tab_real1 WHERE fld_noalias1 = 'value1'
Delete( table => "tab_alias1", where => [ "fld_real1" => 1 ] )
returns: DELETE FROM tab_real1 WHERE fld_real1 = 'value1'
Delete( table => "tab_noalias", where => [ "tab_noalias.fld_alias1" => "value1" ] )
returns: DELETE FROM tab_noalias WHERE fld_alias1 = 'value1'
Delete( table => "tab_alias1", where => [ "tab_alias1.fld_alias1" => "value1" ] )
returns: DELETE FROM tab_real1 WHERE fld_real1 = 'value1'
Delete( table => "tab_real1", where => [ "tab_alias1.fld_alias1" => "value1" ] )
returns: DELETE FROM tab_real1 WHERE fld_real1 = 'value1'
INSERT COMMANDS
Insert( table => "tab_noalias", fields => { "fld_alias1" => "value1" } )
returns: INSERT INTO tab_noalias (fld_alias1) VALUES ('value1')
Insert( table => "tab_noalias", fields => [ "fld_alias1" ], values => [ "value1" ]
returns: INSERT INTO tab_noalias (fld_alias1) VALUES ('value1')
Insert( table => "tab_noalias", fields => { "fld_alias1" => "value1", "fld_alias2" => "value2" } )
returns: INSERT INTO tab_noalias (fld_alias1,fld_alias2) VALUES ('value1','value2')
Insert( table => "tab_noalias", fields => [ "fld_alias1","fld_alias2" ], values => [ "value1","value2" ] )
returns: INSERT INTO tab_noalias (fld_alias1,fld_alias2) VALUES ('value1','value2')
Insert( table => "tab_noalias", fields => [ "fld_alias1" ], values => [ "value1","value2" ] )
returns: INSERT INTO tab_noalias (fld_alias1) VALUES ('value1'),('value2')
Insert( table => "tab_noalias", fields => [ "tab_noalias.fld_alias1" ], values => [ "value1" ] )
returns: INSERT INTO tab_noalias (fld_alias1) VALUES ('value1')
Insert( table => "tab_noalias", fields => [ "bad_table.fld_alias1" ], values => [ "value1" ] )
returns: INSERT INTO tab_noalias (bad_table.fld_alias1) VALUES ('value1')
Insert( table => "tab_alias1", fields => { "fld_alias1" => "value1" } )
returns: INSERT INTO tab_real1 (fld_real1) VALUES ('value1')
Insert( table => "tab_real1", fields => { "fld_alias1" => "value1" } )
returns: INSERT INTO tab_real1 (fld_real1) VALUES ('value1')
Insert( table => "tab_alias1", fields => { "tab_alias1.fld_alias1" => "value1" } )
returns: INSERT INTO tab_real1 (fld_real1) VALUES ('value1')
Insert( table => "tab_real1", fields => { "tab_real1.fld_alias1" => "value1" } )
returns: INSERT INTO tab_real1 (fld_real1) VALUES ('value1')
Insert( table => "tab_alias1", fields => { "tab_alias1.fld_real1" => "value1" } )
returns: INSERT INTO tab_real1 (fld_real1) VALUES ('value1')
Insert( table => "tab_real1", fields => { "tab_real1.fld_alias1" => "value1" } )
returns: INSERT INTO tab_real1 (fld_real1) VALUES ('value1')
SELECT COMMAND
Select( table => "tab_noalias", fields => "fld_alias1" )
returns: SELECT fld_alias1 FROM tab_noalias
Select( table => "tab_noalias", fields => [ "fld_alias1" ] )
returns: SELECT fld_alias1 FROM tab_noalias
Select( table => "tab_alias1", fields => "fld_alias1" )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1
Select( table => "tab_alias1", fields => [ "fld_alias1" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1
Select( table => "tab_alias1", fields => [ "fld_real1" ] )
returns: SELECT fld_real1 FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ "fld_real1" ] )
returns: SELECT fld_real1 FROM tab_real1 tab_alias1
Select( table => "tab_alias1", fields => [ "fld_noalias" ] )
returns: SELECT fld_noalias FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ "fld_noalias" ] )
returns: SELECT fld_noalias FROM tab_real1 tab_alias1
Select( table => "tab_noalias", fields => "tab_noalias.fld_alias1" )
returns: SELECT tab_noalias.fld_alias1 FROM tab_noalias
Select( table => "tab_alias1", fields => [ "tab_alias1.fld_alias1" ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1 FROM tab_real1 tab_alias1
Select( table => "tab_alias1", fields => [ "tab_real1.fld_alias1" ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1 FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ "tab_alias1.fld_alias1" ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1 FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ "tab_real1.fld_alias1" ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1 FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ "bad_alias1.fld_alias1" ] )
message: 010E [select] Field 'bad_alias1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => "tab_noalias", fields => [ "bad_alias1.fld_alias1" ] )
message: 010E [select] Field 'bad_alias1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => "tab_noalias", fields => [ "bad_real1.fld_alias1" ] )
message: 010E [select] Field 'bad_real1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => ["tab_noalias1","tab_noalias2"], fields => "fld_alias1" )
returns: SELECT fld_alias1 FROM tab_noalias1, tab_noalias2
Select( table => ["tab_noalias1","tab_noalias2"], fields => [ "fld_alias1" ] )
returns: SELECT fld_alias1 FROM tab_noalias1, tab_noalias2
Select( table => ["tab_alias1","tab_alias2"], fields => "fld_alias1" )
note: The fld_alias1 defined in both tables, cannot translate, us: [table].[field]
returns: SELECT fld_alias1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_real1","tab_real2"], fields => "fld_alias1" )
note: The fld_alias1 defined in both tables, cannot translate, us: [table].[field]
returns: SELECT fld_alias1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_noalias1","tab_noalias2"], fields => "tab_noalias3.fld_alias1 )
message: 010E [select] Field 'tab_noalias3.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => ["tab_alias1","tab_alias2"], fields => [ "tab_alias1.fld_alias1" ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_alias1","tab_alias2"], fields => [ "tab_real1.fld_alias1" ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_alias1","tab_alias2"], fields => [ "tab_alias1.fld_alias1" ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_real1","tab_real2"], fields => [ "tab_real1.fld_alias1" ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_real1","tab_real2"], fields => [ "bad_alias1.fld_alias1" ] )
message: 010E [select] Field 'bad_alias1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => ["tab_real1","tab_real2"], fields => [ "bad_real1.fld_alias1" ] )
message: 010E [select] Field 'bad_real1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => ["tab_noalias1","tab_noalias2"], fields => [ "bad_alias1.fld_alias1" ] )
message: 010E [select] Field 'bad_alias1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => ["tab_noalias1","tab_noalias2"], fields => [ "bad_real1.fld_alias1" ] )
message: 010E [select] Field 'bad_real1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => "tab_noalias", fields => [ {"fld_alias1"=>"my1"} ] )
returns: SELECT fld_alias1 my1 FROM tab_noalias
Select( table => "tab_alias1", fields => [ {"fld_alias1"=>"my1"} ] )
returns: SELECT fld_real1 my1 FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ {"fld_alias1"=>"my1"} ] )
returns: SELECT fld_real1 my1 FROM tab_real1 tab_alias1
Select( table => "tab_alias1", fields => [ {"fld_real1"=>"my1"} ] )
returns: SELECT fld_real1 my1 FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ {"fld_real1"=>"my1"} ] )
returns: SELECT fld_real1 my1 FROM tab_real1 tab_alias1
Select( table => "tab_alias1", fields => [ {"fld_noalias"=>"my1} ] )
returns: SELECT fld_noalias my1 FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ {"fld_noalias"=>"my1"} ] )
returns: SELECT fld_noalias my1 FROM tab_real1 tab_alias1
Select( table => "tab_alias1", fields => [ {"tab_alias1.fld_alias1"=>"my1"} ] )
returns: SELECT tab_alias1.fld_real1 my1 FROM tab_real1 tab_alias1
Select( table => "tab_alias1", fields => [ {"tab_real1.fld_alias1"=>"my1"} ] )
returns: SELECT tab_alias1.fld_real1 my1 FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ {"tab_alias1.fld_alias1"=>"my1"} ] )
returns: SELECT tab_alias1.fld_real1 my1 FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ {"tab_real1.fld_alias1"=>"my1"} ] )
returns: SELECT tab_alias1.fld_real1 my1 FROM tab_real1 tab_alias1
Select( table => "tab_real1", fields => [ {"bad_alias1.fld_alias1"=>"my1"} ] )
message: 010E [select] Field 'bad_alias1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => "tab_real1", fields => [ {"bad_real1.fld_alias1"=>"my1"} ] )
message: 010E [select] Field 'bad_real1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => "tab_noalias", fields => [ {"bad_alias1.fld_alias1"=>"my1"} ] )
message: 010E [select] Field 'bad_alias1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => "tab_noalias", fields => [ {"bad_real1.fld_alias1"=>"my1"} ] )
message: 010E [select] Field 'bad_real1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => ["tab_noalias1","tab_noalias2"], fields => [ {"fld_alias1"=>"my1"} ] )
returns: SELECT fld_alias1 my1 FROM tab_noalias1, tab_noalias2
Select( table => ["tab_alias1","tab_alias2"], fields => [ {"fld_real1"=>"my1"} ] )
returns: SELECT fld_real1 my1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_real1","tab_real2"], fields => [ {"fld_real1"=>"my1"} ] )
returns: SELECT fld_real1 my1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_alias1","tab_alias2"], fields => [ {"fld_noalias"=>"my1"} ] )
returns: SELECT fld_noalias my1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => "tab_real1", fields => [ {"fld_noalias"=>"my1"} ] )
returns: SELECT fld_noalias my1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_alias1","tab_alias2"], fields => [ {"tab_alias1.fld_alias1"=>"my1"} ] )
returns: SELECT tab_alias1.fld_real1 my1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_alias1","tab_alias2"], fields => [ {"tab_real1.fld_alias1"=>"my1"} ] )
returns: SELECT tab_alias1.fld_real1 my1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_alias1","tab_alias2"], fields => [ {"tab_alias1.fld_alias1"=>"my1"} ] )
returns: SELECT tab_alias1.fld_real1 my1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_real1","tab_real2"], fields => [ {"tab_real1.fld_alias1"=>"my1"} ] )
returns: SELECT tab_alias1.fld_real1 my1 FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_real1","tab_real2"], fields => [ {"bad_alias1.fld_alias1"=>"my1"} ] )
message: 010E [select] Field 'bad_alias1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => ["tab_real1","tab_real2"], fields => [ {"bad_real1.fld_alias1"=>"my1"} ] )
message: 010E [select] Field 'bad_real1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => ["tab_noalias1","tab_noalias2"], fields => [ {"bad_alias1.fld_alias1"=>"my1"} ] )
message: 010E [select] Field 'bad_alias1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => ["tab_noalias1","tab_noalias2"], fields => [ {"bad_real1.fld_alias1"=>"my1"} ] )
message: 010E [select] Field 'bad_real1.fld_alias1' not mapped in table list
note: *** no SQL command returns -- invalid arguments ***
Select( table => "tab_noalias1" )
returns: SELECT * FROM tab_noalias1
Select( table => "tab_alias1" )
returns: SELECT fld_real1 fld_alias1, fld_real2 fld_alias2, fld_realX fld_aliasX FROM tab_real1 tab_alias1
Select( table => "tab_real1" )
returns: SELECT fld_real1 fld_alias1, fld_real2 fld_alias2, fld_realX fld_aliasX FROM tab_real1 tab_alias1
Select( table => "tab_alias1", fields => "*" )
returns: SELECT * FROM tab_real1 tab_alias1
Select( table => ["tab_alias1","tab_alias2"], fields => "*" )
returns: SELECT * FROM tab_real1 tab_alias1, tab_real2 tab_alias2
Select( table => ["tab_alias1","tab_noalias"], fields => "*" )
returns: SELECT * FROM tab_real1 tab_alias1, tab_noalias
Select( table => ["tab_noalias1","tab_noalias2"] )
returns: SELECT * FROM tab_noalias1, tab_noalias2
SELECT AND GROUPBY COMMAND
Select( table => "tab_alias1", fields => [ "fld_alias1" ], group_by => [ "fld_alias1" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY fld_real1
Select( table => "tab_alias1", fields => [ "fld_real1" ], group_by => [ "fld_real1" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY fld_real1
Select( table => "tab_alias1", fields => [ "fld_real1" ], group_by => [ "fld_noalias" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY fld_noalias
Select( table => "tab_alias1", fields => [ "fld_alias1" ], group_by => [ "fld_alias1","fld_alias2" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY fld_real1, fld_real2
Select( table => "tab_alias1", fields => [ "fld_real1" ], group_by => [ "fld_real1","fld_real2" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY fld_real1, fld_real2
Select( table => "tab_alias1", fields => [ "fld_real1" ], group_by => [ "fld_noalias1","fld_noalias2" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY fld_noalias1, fld_noalias2
Select( table => "tab_alias1", fields => [ "fld_alias1" ], group_by => [ "tab_alias1.fld_alias1" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY tab_alias1.fld_real1
Select( table => "tab_alias1", fields => [ "fld_alias1" ], group_by => [ "tab_alias1.fld_real1" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY tab_alias1.fld_real1
Select( table => "tab_alias1", fields => [ "fld_alias1" ], group_by => [ "tab_real1.fld_alias1" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY tab_alias1.fld_real1
Select( table => "tab_alias1", fields => [ "fld_alias1" ], group_by => [ "tab_real1.fld_real1" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY tab_alias1.fld_real1
Select( table => "tab_alias1", fields => [ "fld_alias1" ], group_by => [ "tab_real1.fld_noalias1" ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 GROUP BY tab_alias1.fld_noalias1
Select( table => ["tab_alias1","tab_alias2"], fields => [ "fld_alias1","fld_alias2" ], group_by => [ "tab_real1.fld_alias1","tab_real2.fld_alias2" ] )
note: The fld_alias1 & fld_alias2 defined in both tables, cannot translate, us: [table].[field]
returns: SELECT fld_alias1, fld_alias2 FROM tab_real1 tab_alias1, tab_real2 tab_alias2 GROUP BY tab_alias1.fld_real1, tab_alias2.fld_real2
Select( table => ["tab_alias1","tab_alias2"], fields => [ "fld_alias1","fld_alias2" ], group_by => [ "tab_real1.fld_real1","tab_real2.fld_real2" ] )
note: The fld_alias1 & fld_alias2 defined in both tables, cannot translate, us: [table].[field]
returns: SELECT fld_alias1, fld_alias2 FROM tab_real1 tab_alias1, tab_real2 tab_alias2 GROUP BY tab_alias1.fld_real1, tab_alias2.fld_real2
Select( table => ["tab_alias1","tab_alias2"], fields => [ "fld_alias1","fld_alias2" ], group_by => [ "tab_real1.fld_noalias1","tab_real2.fld_noalias2" ] )
note: The fld_alias1 & fld_alias2 defined in both tables, cannot translate, us: [table].[field]
returns: SELECT fld_alias1, fld_alias2 FROM tab_real1 tab_alias1, tab_real2 tab_alias2 GROUP BY tab_alias1.fld_noalias1, tab_alias2.fld_noalias2
Select( table => ["tab_alias1","tab_alias2"], fields => [ {"fld_alias1"=>"my1"},{"fld_alias2"->"my2"} ], group_by => [ "tab_alias1.my1","tab_alias1.my2" ] )
warning: translate the table name 'tab_real1' but 'my2' is not assigned in same table -- DOT NOT USE
returns: SELECT fld_alias1 my1, fld_alias2 my2 FROM tab_real1 tab_alias1, tab_real2 tab_alias2 GROUP BY tab_alias1.my1, tab_alias1.my2
SELECT AND ORDERBY COMMAND
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"fld_alias1"=>"asc"} ] )
note: lower case is supported
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY fld_real1 ASC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"fld_alias1"=>"ASC"} ] )
note: upper case is supported
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY fld_real1 ASC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"fld_alias1"=>"AsC"} ] )
note: mixed case is supported
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY fld_real1 ASC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"fld_real1"=>"asc"} ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY fld_real1 ASC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"fld_noalias1"=>"asc"} ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY fld_noalias1 ASC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"fld_alias1"=>"desc"} ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY fld_real1 DESC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"tab_alias1.fld_real1"=>"asc"} ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY tab_alias1.fld_real1 ASC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"tab_real1.fld_real1"=>"desc"} ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY tab_alias1.fld_real1 DESC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"tab_alias1.fld_real1"=>"desc"} ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY tab_alias1.fld_real1 DESC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"tab_real1.fld_alias1"=>"desc"} ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY tab_alias1.fld_real1 DESC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"tab_noalias.fld_noalias1"=>"asc"} ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY tab_noalias.fld_noalias1 ASC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"tab_noalias.fld_alias1"=>"asc"} ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY tab_noalias.fld_alias1 ASC
Select( table => "tab_alias1", fields => [ "fld_alias1" ], order_by => [ {"tab_noalias.fld_real1"=>"asc"} ] )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 ORDER BY tab_noalias.fld_real1 ASC
Select( table => ["tab_alias1","tab_alias2"], fields => [ "tab_alias1.fld_alias1","tab_alias2.fld_alias2" ], order_by => [ {"tab_alias1.fld_alias1"=>"asc"},{"tab_alias2.fld_alias2"=>"asc"} ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1, tab_alias2.fld_real2 fld_alias2 FROM tab_real1 tab_alias1, tab_real2 tab_alias2 ORDER BY tab_alias1.fld_real1 ASC, tab_alias2.fld_real2 ASC
Select( table => ["tab_alias1","tab_alias2"], fields => [ "tab_alias1.fld_alias1","tab_alias2.fld_alias2" ], order_by => [ {"tab_real1.fld_alias1"=>"asc"},{"tab_real2.fld_alias2"=>"asc"} ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1, tab_alias2.fld_real2 fld_alias2 FROM tab_real1 tab_alias1, tab_real2 tab_alias2 ORDER BY tab_alias1.fld_real1 ASC, tab_alias2.fld_real2 ASC
Select( table => ["tab_alias1","tab_alias2"], fields => [ "tab_alias1.fld_alias1","tab_alias2.fld_alias2" ], order_by => [ "tab_real1.fld_alias1","tab_real2.fld_alias2" ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1, tab_alias2.fld_real2 fld_alias2 FROM tab_real1 tab_alias1, tab_real2 tab_alias2 ORDER BY tab_alias1.fld_real1, tab_alias2.fld_real2
Select( table => ["tab_alias1","tab_alias2"], fields => [ "tab_alias1.fld_alias1","tab_alias2.fld_alias2" ], order_by => "tab_real1.fld_alias1" ] )
returns: SELECT tab_alias1.fld_real1 fld_alias1, tab_alias2.fld_real2 fld_alias2 FROM tab_real1 tab_alias1, tab_real2 tab_alias2 ORDER BY tab_alias1.fld_real1
Select( table => ["tab_alias1","tab_alias2"], fields => [ "tab_alias1.fld_alias1","tab_alias2.fld_alias2" ], order_by => {"tab_real1.fld_alias1"=>"desc"} )
returns: SELECT tab_alias1.fld_real1 fld_alias1, tab_alias2.fld_real2 fld_alias2 FROM tab_real1 tab_alias1, tab_real2 tab_alias2 ORDER BY tab_alias1.fld_real1 DESC
SELECT AND SUBQUERY COMMAND
Select( table => "tab_alias1", fields => [ "fld_alias1" ], where => [ "fld_alias1" => \$mymod->SelectSubQuery( table => "ta_alias2", fields => [ "fld_alias2" ], where => [ "fld_alias2" => "value2" ] ) } )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 WHERE fld_real1 IN (SELECT fld_real2 fld_alias2 FROM tab_real2 tab_alias2 WHERE fld_real2 = 'value2')
Select( table => "tab_alias1", fields => [ "fld_alias1" ], where => [ "fld_alias1" => [ "!", \$mymod->SelectSubQuery( table => "ta_alias2", fields => [ "fld_alias2" ], where => [ "fld_alias2" => "value2" ] ) ] } )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 WHERE fld_real1 NOT IN (SELECT fld_real2 fld_alias2 FROM tab_real2 tab_alias2 WHERE fld_real2 = 'value2')
Select( table => "tab_alias1", fields => [ "fld_alias1" ], where => [ "fld_alias1" => \$mymod->Select( table => "ta_alias2", fields => [ "fld_alias2" ], where => [ "fld_alias2" => "value2" ], subquery => 1 ) } )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 WHERE fld_real1 IN (SELECT fld_real2 fld_alias2 FROM tab_real2 tab_alias2 WHERE fld_real2 = 'value2')
Select( table => "tab_alias1", fields => [ "fld_alias1" ], where => [ "fld_alias1" => [ "!", \$mymod->SelectSubQuery( table => "ta_alias2", fields => [ "fld_alias2" ], where => [ "fld_alias2" => "value2" ] ) ] } )
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 WHERE fld_real1 NOT IN (SELECT fld_real2 fld_alias2 FROM tab_real2 tab_alias2 WHERE fld_real2 = 'value2')
Select( table => "tab_alias1", fields => [ "fld_alias1" ], where => [ "fld_alias1" => [ \$mymod->Select( table => "tab_alias2", fields => [ "fld_alias2" ], where => [ "fld_alias2" => "value2" ], subquery => 1 ), "..", \$mymod->Select( table => "tab_alias2", fields => [ "fld_alias2" ], where => [ "fld_alias2" => "value3" ], subquery => 1,), ], "fld_noalias1" => "value1" ] )
note: The option 'subquery=1' is mandatory for Select option, the SQL command results is string as return
returns: SELECT fld_real1 fld_alias1 FROM tab_real1 tab_alias1 WHERE fld_real1 BETWEEN ((SELECT fld_real2 fld_alias2 FROM tab_real2 tab_alias2 WHERE fld_real2 = 'value2'),(SELECT fld_real2 fld_alias2 FROM tab_real2 tab_alias2 WHERE fld_real2 = 'value3')) AND fld_noalias1 = 'value1'
SELECTCURSOR COMMAND
SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_NEXT, limit=>100 )
note: Command=NEXT, Cursor is first(1) and last(100)
returns: SELECT a, b, c FROM t1 WHERE a > '100' ORDER BY a ASC LIMIT 100
SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_BACK, limit=>100 )
note: Command=BACK, Cursor is first(101) and last(200)
returns: SELECT a, b, c FROM t1 WHERE a < '101' ORDER BY a DESC LIMIT 100
SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_RELOAD, limit=>100 )
note: Command=RELOAD, Cursor is first(1) and last(100)
returns: SELECT a, b, c FROM t1 WHERE a >= '1' ORDER BY a ASC LIMIT 100
SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_LAST, limit=>100 )
note: Command=LAST, Cursor is first(1) and last(100)
returns: SELECT a, b, c FROM t1 ORDER BY a DESC LIMIT 100
SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_TOP, limit=>0 )
note: Command=TOP, Limit is ZERO
returns: SELECT a, b, c FROM t1 ORDER BY a ASC
SelectCursor( table=>["t1","t2"], fields => [ "t1.a","t1.b","t2.c"], cursor_info => \%cursor, cursor_key=>["t1.a","t2.c"], limit=>100 )
note: Option cursor_command is omited
returns: SELECT t1.a, t1.b, t2.c FROM t1, t2 WHERE ((t1.a > 'a') OR (t1.a = 'a' AND t2.c > '100')) ORDER BY t1.a ASC, t2.c ASC LIMIT 100
SelectCursor( table=>["t1","t2"], fields => [ "t1.a","t1.b","t2.c"], cursor_info => \%cursor, cursor_key=>["t1.a","t2.c"], limit=>100, cursor_command=>SQL_SIMPLE_CURSOR_TOP )
note: The cursor_info is ignored
returns: SELECT t1.a, t1.b, t2.c FROM t1, t2 ORDER BY t1.a ASC, t2.c ASC LIMIT 100
SelectCursor( table=>["t1","t2"], fields => [ "t1.a","t1.b","t2.c"], cursor_info => \%cursor, cursor_key=>["t1.a","t2.c"], limit=>100, cursor_command=>SQL_SIMPLE_CURSOR_NEXT )
returns: SELECT t1.a, t1.b, t2.c FROM t1, t2 WHERE ((t1.a > 'a') OR (t1.a = 'a' AND t2.c > '100')) ORDER BY t1.a ASC, t2.c ASC LIMIT 100
SelectCursor( table=>["t1","t2"], fields => [ "t1.a","t1.b","t2.c"], cursor_info => \%cursor, cursor_key=>["t1.a","t2.c"], limit=>100, cursor_command=>SQL_SIMPLE_CURSOR_BACK
returns: SELECT t1.a, t1.b, t2.c FROM t1, t2 WHERE ((t1.a < 'a') OR (t1.a = 'a' AND t2.c < '1')) ORDER BY t1.a DESC, t2.c DESC LIMIT 100
SelectCursor( table=>["t1","t2"], fields => [ "t1.a","t1.b","t2.c"], cursor_info => \%cursor, cursor_key=>["t1.a","t2.c"], limit=>100, cursor_command=>SQL_SIMPLE_CURSOR_LAST )
returns: SELECT t1.a, t1.b, t2.c FROM t1, t2 ORDER BY t1.a DESC, t2.c DESC LIMIT 100
SelectCursor( table=>["t1","t2"], fields => [ "t1.a","t1.b","t2.c"], cursor_info => \%cursor, cursor_key=>["t1.a","t2.c"], limit=>100, cursor_command=>SQL_SIMPLE_CURSOR_RELOAD
returns: SELECT t1.a, t1.b, t2.c FROM t1, t2 WHERE ((t1.a >= 'a') OR (t1.a = 'a' AND t2.c >= '1')) ORDER BY t1.a ASC, t2.c ASC LIMIT 100
SelectCursor( table=>["t1","t2"], fields => [ "t1.a","t1.b","t2.c"], where => ["t1.a" => "\t2.a"], cursor_info => \%cursor, cursor_key=>["t1.a","t2.c"], limit=>100 )
note: Cursor command is omitted
returns: SELECT t1.a, t1.b, t2.c FROM t1, t2 WHERE t1.a = t2.a AND (((t1.a > 'a') OR (t1.a = 'a' AND t2.c > '100'))) ORDER BY t1.a ASC, t2.c ASC LIMIT 100
SelectCursor( table=>["t1","t2"], fields => [ "t1.a","t1.b","t2.c"], where => ["t1.a" => "\t2.a"], cursor_info => \%cursor, cursor_key=>["t1.a","t2.c"], cursor_command=>SQL_SIMPLE_CURSOR_RELOAD, limit=>100 )
returns: SELECT t1.a, t1.b, t2.c FROM t1, t2 WHERE t1.a = t2.a AND (((t1.a >= 'a') OR (t1.a = 'a' AND t2.c >= '1'))) ORDER BY t1.a ASC, t2.c ASC LIMIT 100
SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_TOP, limit=>100 )
note: Command=TOP, Cursor is empty
returns: SELECT a, b, c FROM t1 ORDER BY a ASC LIMIT 100
SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", limit=>100 )
note: Command=TOP, Cursor is empty
returns: SELECT a, b, c FROM t1 ORDER BY a ASC LIMIT 100
SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_NEXT, limit=>100 )
note: Command=NEXT, Cursor is empty
returns: SELECT a, b, c FROM t1 ORDER BY a ASC LIMIT 100
SelectCursor( table=>"t1", fields => [ "a","b","c"], cursor_info => \%cursor , cursor_key=>"a", cursor_command=>SQL_SIMPLE_CURSOR_BACK, limit=>100 )
note: Command=BACK, Cursor is empty
returns: SELECT a, b, c FROM t1 ORDER BY a DESC LIMIT 100
UPDATE COMMANDS
Update( table => "tab_noalias", fields => { "fld_alias1" => "value1" }, force => 1
returns: UPDATE tab_noalias SET fld_alias1 = 'value1'
Update( table => "tab_noalias", fields => { "fld_alias1" => "value1", "fld_alias2" => "value2" }, force => 1 )
returns: UPDATE tab_noalias SET fld_alias1 = 'value1', fld_alias2 = 'value2'
Update( table => "tab_alias1", fields => { "fld_alias1" => "value1" }, force => 1 )
returns: UPDATE tab_real1 SET fld_real1 = 'value1'
Update( table => "tab_real1", fields => { "fld_alias1" => "value1" }, force => 1 )
returns: UPDATE tab_real1 SET fld_real1 = 'value1'
Update( table => "tab_alias1", fields => { "fld_alias1" => "value1", "fld_alias2" => "value2", }, force => 1 )
returns: UPDATE tab_real1 SET fld_real1 = 'value1', fld_real2 = 'value2'
Update( table => "tab_real1", fields => { "fld_alias1" => "value1", "fld_alias2" => "value2", }, force => 1 )
returns: UPDATE tab_real1 SET fld_real1 = 'value1', fld_real2 = 'value2'
Update( table => "tab_alias1", fields => { "fld_noalias1" => "value1" }, force => 1 )
returns: UPDATE tab_real1 SET fld_noalias = 'value1'
Update( table => "tab_real1", fields => { "fld_noalias1" => "value1" }, force => 1 )
returns: UPDATE tab_real1 SET fld_noalias = 'value1'
Update( table => "tab_noalias", fields => { "tab_noalias.fld_alias1" => "value1" }, force => 1 )
returns: UPDATE tab_noalias SET fld_alias1 = 'value1'
Update( table => "tab_noalias", fields => { "tab_noalias.fld_alias1" => "value1", "tab_noalias.fld_alias2" => "value2" }, force => 1 )
returns: UPDATE tab_noalias SET fld_alias1 = 'value1', fld_alias2 = 'value2'
Update( table => "tab_alias1", fields => { "tab_alias1.fld_alias1" => "value1" }, force => 1 )
returns: UPDATE tab_real1 SET fld_real1 = 'value1'
Update( table => "tab_real1", fields => { "tab_real1.fld_alias1" => "value1" }, force => 1 )
returns: UPDATE tab_real1 SET fld_real1 = 'value1'
Update( table => "tab_alias1", fields => { "tab_alias1.fld_noalias" => "value1" }, force => 1 )
returns: UPDATE tab_real1 SET fld_noalias = 'value1'
Update( table => "tab_real1", fields => { "tab_real1.fld_noalias" => "value1" }, force => 1 )
returns: UPDATE tab_real1 SET fld_noalias = 'value1'
Update( table => "tab_alias1", fields => { "bad_alias1.fld_alias1" => "value1" }, force => 1 )
returns: UPDATE tab_real1 tab_alias1 SET bad_alias1.fld_alias1 = 'value1'
Update( table => "tab_real1", fields => { "bad_alias1.fld_alias1" => "value1" }, force => 1 )
returns: UPDATE tab_real1 tab_alias1 SET bad_alias1.fld_alias1 = 'value1'
Update( table => ["tab_noalias1","tab_noalias2"], fields => { "tab_noalias1.fld_alias1" => "value1", "tab_noalias2.fld_alias2" => "value2", }, force => 1 )
returns: UPDATE tab_noalias1, tab_noalias2 SET tab_noalias1.fld_alias1 = 'value1', tab_noalias2.fld_alias2 = 'value2'
Update( table => ["tab_alias1","tab_noalias2"], fields => { "bad_alias1.fld_alias1" => "value1" }, force => 1 )
returns: UPDATE tab_real1 tab_alias1, tab_noalias2 SET bad_alias1.fld_alias1 = 'value1'
Update( table => ["tab_alias1","tab_alias2"], fields => { "tab_alias1.fld_alias1" => "value1", "tab_real2.fld_alias2" => "value2" }, force => 1 )
returns: UPDATE tab_real1 tab_alias1, tab_real2 tab_alias2 SET tab_alias1.fld_real1 = 'value1', tab_alias2.fld_real2 = 'value2'
Update( table => ["tab_alias1","tab_real2"], fields => { "tab_alias1.fld_alias1" => "value1", "tab_alias2.fld_alias2" => "value2" }, force => 1 )
returns: UPDATE tab_real1 tab_alias1, tab_real2 tab_alias2 SET tab_alias1.fld_real1 = 'value1', tab_alias2.fld_real2 = 'value2'
Update( table => ["tab_alias1","tab_alias2"], fields => { "tab_alias1.fld_alias1" => "value1", "tab_real2.fld_alias2" => "value2" }, force => 1 )
returns: UPDATE tab_real1 tab_alias1, tab_real2 tab_alias2 SET tab_alias1.fld_real1 = 'value1', tab_alias2.fld_noalias = 'value2'
Update( table => ["tab_alias1","tab_real2"], fields => { "tab_alias1.fld_alias1" => "value1", "tab_alias2.fld_alias2" => "value2" }, force => 1 )
returns: UPDATE tab_real1 tab_alias1, tab_real2 tab_alias2 SET tab_alias1.fld_real1 = 'value1', tab_alias2.fld_noalias = 'value2'
Update( table => ["tab_alias1","tab_real2"], fields => { "bad_alias.fld_alias1" => "value1" }, force => 1 )
returns: UPDATE tab_real1 tab_alias1, tab_real2 tab_alias2 SET bad_alias.fld_alias1 = 'value1'
Update( table => ["tab_alias1","tab_real2"], fields => { "bad_alias.fld_alias1" => "value1", "tab_alias1.fld_alias1" => "value2" }, force => 1 )
returns: UPDATE tab_real1 tab_alias1, tab_real2 tab_alias2 SET bad_alias.fld_alias1 = 'value1', tab_alias1.fld_real1 = 'value2'
Update( table => "tab_noalias", fields => { "fld_alias1" => "value2" }, where => [ "fld_alias1" => "value1" ] )
returns: UPDATE tab_noalias SET fld_alias1 = 'value2' WHERE fld_alias1 = 'value1'
Update( table => "tab_alias1", fields => { "fld_alias1" => "value2" }, where => [ "fld_alias1" => "value1" ] )
returns: UPDATE tab_real1 SET fld_real1 = 'value2' WHERE fld_real1 = 'value1'
Update( table => "tab_real1", fields => { "fld_alias1" => "value2" }, where => [ "fld_alias1" => "value1" ] )
returns: UPDATE tab_real1 SET fld_real1 = 'value2' WHERE fld_real1 = 'value1'
Update( table => "tab_alias1", fields => { "fld_alias1" => "value2" }, where => [ "fld_noalias1" => "value1" ] )
returns: UPDATE tab_real1 SET fld_real1 = 'value2' WHERE fld_noalias1 = 'value1'
Update( table => "tab_alias1", fields => { "fld_alias1" => "value2" }, where => [ "fld_real1" => 1 ] )
returns: UPDATE tab_real1 SET fld_real1 = 'value2' WHERE fld_real1 = 'value1'
Update( table => "tab_noalias", fields => { "fld_alias1" => "value2" }, where => [ "tab_noalias.fld_alias1" => "value1" ] )
returns: UPDATE tab_noalias SET fld_alias1 = 'value2' WHERE fld_alias1 = 'value1'
Update( table => "tab_alias1", fields => { "fld_alias1" => "value2" }, where => [ "tab_alias1.fld_alias1" => "value1" ] )
returns: UPDATE tab_real1 SET fld_real1 = 'value2' WHERE fld_real1 = 'value1'
Update( table => "tab_real1", fields => { "fld_alias1" => "value2" }, where => [ "tab_alias1.fld_alias1" => "value1" ] )
returns: UPDATE tab_real1 SET fld_real1 = 'value2' WHERE fld_real1 = 'value1'
Update( table => ["tab_noalias1","tab_noalias2"], fields => { "tab_noalias1.fld_alias1" => "value2", "tab_noalias2.fld_alias2" => "value1" }, where => [ "tab_noalias1.fld_alias1" => "value1", "tab_noalias2.fld_alias2" => "value2" ] )
returns: UPDATE tab_noalias1, tab_noalias2 SET tab_noalias1.fld_alias1 = 'value2', tab_noalias2.fld_alias2 = 'value1' WHERE tab_noalias1.fld_alias1 = 'value1' AND tab_noalias2.fld_alias2 = 'value2'
Update( table => ["tab_alias1","tab_alias2"], fields => { "tab_alias1.fld_alias1" => "value2", "tab_alias2.fld_alias2" => "value1" }, where => [ "tab_alias1.fld_alias1" => "value1", "tab_alias2.fld_alias2" => "value2" ] )
returns: UPDATE tab_real1 tab_alias1, tab_real2 tab_alias2 SET tab_alias1.fld_real1 = 'value2', tab_alias2.fld_real2 = 'value1' WHERE tab_alias1.fld_real1 = 'value1' AND tab_alias2.fld_real2 = 'value2'
Update( table => ["tab_real1","tab_real2"], fields => { "tab_real1.fld_alias1" => "value2", "tab_real2.fld_alias2" => "value1" }, where => [ "tab_real1.fld_alias1" => "value1", "tab_real2.fld_alias2" => "value2" ] )
returns: UPDATE tab_real1 tab_alias1, tab_real2 tab_alias2 SET tab_alias1.fld_real1 = 'value2', tab_alias2.fld_real2 = 'value1' WHERE tab_alias1.fld_real1 = 'value1' AND tab_alias2.fld_real2 = 'value2'
Tests without "Aliases Table"
DELETE COMMANDS
Delete( table=>"t1", where => [ fld => 123 ] )
returns: DELETE FROM t1 WHERE fld = '123'
INSERT COMMANDS
Insert( table=>"t1", fields => { a => 1, b => 2, c => 3 } )
returns: INSERT INTO t1 (a,b,c) VALUES ('1','2','3')
Insert( table=>"t1", fields => [ "a","b","c" ], values => [ 1,2,3 ] )
returns: INSERT INTO t1 (a,b,c) VALUES ('1','2','3')
SELECT COMMANDS
Select( table=>"t1", fields => [ "a","b","c"] )
returns: SELECT a, b, c FROM t1
Select( table=>"t1", fields => [ "a","b","c"], where => [ d=>4 ] )
returns: SELECT a, b, c FROM t1 WHERE d = '4'
Select( table=>"t1", fields => [ "a","b","c"], where => [ d=>4, e=>5 ] )
returns: SELECT a, b, c FROM t1 WHERE d = '4' AND e = '5'
Select( table=>"t1", fields => [ "a","b","c"], where => [ d=>'\substr(e,1,8)' ] )
returns: SELECT a, b, c FROM t1 WHERE d = substr(e,1,8)
Select( table=>["t1","t2"], fields => [ "t1.a","t2.b" ], where => [ "t1.a" => "\t2.b" ] )
returns: SELECT t1.a, t2.b FROM t1, t2 WHERE t1.a = t2.b
Select( table=>"t1", fields => [ {"a"=>"aa"} ], where => [ 'a' => '0' ] )
returns: SELECT a aa FROM t1 WHERE a = '0'
Select( table=>"t1", fields => [ {"t1.a"=>"aa"} ], where => [ 't1.a' => '0' ] )
returns: SELECT t1.a aa FROM t1 WHERE a = '0'
Select( table=>["t1","t2"], fields => [ {"t1.a"=>"aa"}, {"t2.b"=>"bb"} ], where => [ "t1.a" => "\t2.b" ] )
returns: SELECT t1.a aa, t2.b bb FROM t1, t2 WHERE t1.a = t2.b
Select( table=>"t1", fields => [ {"sum(a)"=>"a1"}, {"sum(t1.a)"=>"a2"}, {"\sum(a)"=>"a3"} ], where => [ 'a' => '0' ] )
returns: SELECT sum(a) a1, sum(t1.a) a2, sum(a) a3 FROM t1 WHERE a = '0'
Select( table=>"t1", fields => [ "distinct", "a" ] )
note: Select with DISTINCT array sequence
returns: SELECT DISTINCT a FROM t1
Select( table=>"t1", fields => [ "distinct" => "a" ] )
note: Select with DISTINCT based hash
returns: SELECT DISTINCT a FROM t1
Select( table=>"t1", fields => [ "count(*)" ] )
returns: SELECT count(*) FROM t1
Select( table=>"t1", fields => [ "max(t1.a)" ] )
returns: SELECT max(t1.a) FROM t1
Select( table=>"t1", fields => [ "max(a)" ] )
returns: SELECT max(a) FROM t1
Select( table=>"t1", fields => [ "substr(a,1,8)" ] )
returns: SELECT substr(a,1,8) FROM t1
Select( table=>"t1", fields => [ "\aaa.bbb.ccc" ] )
returns: SELECT aaa.bbb.ccc FROM t1
Select( table=>"t1", fields => [ "distinct","\aaa.bbb.ccc" ] )
returns: SELECT DISTINCT aaa.bbb.ccc FROM t1
Select( table=>["t1","t2"], fields => [ "t1.a","t2.b" ], where => [ 't1.a' => 't2.b' ], sql_save=>1 )
note: SQL_SAVE enabled
returns: SELECT t1.a, t2.b FROM t1, t2 WHERE t1.a = 't2.b'
savefile: /tmp/2023/202310/20231016/sql.teste.20231016.4352.1
savefile: removed
Select( table=>"t1", order_by => "t1.a" )
returns: SELECT * FROM t1 ORDER BY t1.a
Select( table=>"t1", order_by => [ {"t1.a" => "asc"} ] )
returns: SELECT * FROM t1 ORDER BY t1.a ASC
Select( table=>"t1", order_by => [ {"t1.a" => "desc"} ] )
returns: SELECT * FROM t1 ORDER BY t1.a DESC
Select( table=>"t1", order_by => [ "t1.a", "t1.b" ] )
returns: SELECT * FROM t1 ORDER BY t1.a, t1.b
Select( table=>"t1", order_by => [ {"t1.a" => "asc"}, "t1.b" ] )
returns: SELECT * FROM t1 ORDER BY t1.a ASC, t1.b
Select( table=>"t1", order_by => [ "t1.a", {"t1.b"=>"desc"} ] )
returns: SELECT * FROM t1 ORDER BY t1.a, t1.b DESC
Select( table=>"t1", order_by => {"t1.b"=>"desc"} )
returns: SELECT * FROM t1 ORDER BY t1.b DESC
Select( table=>"t1", fields => [{"t1.abc"=>"_abc"},"t1.cde",{"t1.fgh"=>"_fgh"}], where => [ "_abc" => 123 ] )
returns: SELECT t1.abc _abc, t1.cde, t1.fgh _fgh FROM t1 WHERE abc = '123'
Select( table=>"t1", fields => [{"t1.abc"=>"_abc"},"t1.cde",{"t1.fgh"=>"_fgh"}], where => [ "_abc" => 123, "cde" => 234, "t1.abc" => 345] )
returns: SELECT t1.abc _abc, t1.cde, t1.fgh _fgh FROM t1 WHERE abc = '123' AND cde = '234' AND abc = '345'
Select( table=>["t1","t2"], fields => [{"t1.abc"=>"_abc"},"t1.cde",{"t2.fgh"=>"_fgh"},"t2.ijk"], where => [ "_abc" => 123, "cde" => 234, "t1.abc" => 345, "ijk" => 456] )
returns: SELECT t1.abc _abc, t1.cde, t2.fgh _fgh, t2.ijk FROM t1, t2 WHERE t1.abc = '123' AND cde = '234' AND t1.abc = '345' AND ijk = '456'
Select( table=>"t1", fields => [{"t1.abc"=>"_a"}], where => [ "substr(_a,1,4)" => 1234 ] )
returns: SELECT t1.abc _a FROM t1 WHERE substr(abc,1,4) = '1234'
Select( table=>"t1", fields => [{"t1.abc"=>"_a"}], where => [ "concat(substr(_a,1,3),1)" => 1231 ] )
returns: SELECT t1.abc _a FROM t1 WHERE concat(substr(abc,1,4),1) = '1231'
Select( table=>"t1", fields => [{"t1.abc"=>"_a"}], where => [ "func1(func2(_a))" => 1231 ] )
returns: SELECT t1.abc _a FROM t1 WHERE func1(func2(abc)) = '1231'
Select( table=>"t1", fields => [{"t1.abc"=>"_a"}], where => [ "func1(_a)" => 123, "func1(t1.abc)" => 456 ] )
returns: SELECT t1.abc _a FROM t1 WHERE func1(abc) = '123' AND func1(t1.abc) = '456'
UPDATE COMMANDS
Update( table=>"t1", fields => { a => 1, b => 2 }, where => [ c => [ "!", 3 ] ] )
returns: UPDATE t1 SET a = '1', b = '2' WHERE c != '3'
Update( table=>"t1", fields => { a => '\concat(a,"xxxx")' }, force => 1 )
returns: UPDATE t1 SET a = concat(a,"xxxx")
ENDED