0

我正在尝试使用SQL::Abstract::More进行连接,该连接具有 `and 然后是文字值,而不是在表列上。

=>{table.table_id=table_id,table_log.date>table.date,table_log.event_id=1}
            gd_audit_log

我想要的结果输出

LEFT OUTER JOIN table_log ON ( 
    table_log.date > table.date
    AND table.table_id = table_log.table_id
    AND table_log.event_id = 1
)

此代码的工作原理是

AND table_log.event_id = 1

错误是

... failed: Unknown column 'table_log.1' in 'on clause' 

显然它生成了错误的 SQL,我想弄清楚的是如何让它生成我需要的 SQL。

4

3 回答 3

2

来自RT 错误 84972。要插入文字值,您需要使用 hashref 语法,而不是字符串语法:

my $result = $sqla->join(
 'table',
 { operator => '=>',
   condition => { '%1$s.table_id' => {-ident => '%2$s.table_id'},
                  '%2$s.date'     => {'>' => {-ident => '%1$s.date'}},
                  '%2$s.event_id' => 1}},
 'table_log'
);
于 2013-05-01T17:12:12.427 回答
0

在我看来,这table_log.event_id = 1不是一个有效的join条款,但应该在一个where条款中。

于 2013-04-30T22:02:42.080 回答
0

使用武力卢克

qw/table
=>{table.table_id=table_id,table_log.date>table.date,table_log.event_id='1'}
table_log/

需要用单引号 'escape' 1

于 2015-11-16T17:59:05.793 回答