Мне нужно преобразовать SQL, который использует внутреннее соединение, которое преобразует данные, используя IFNULL
и FROM_UNIXTIMESTAMP
вызовы функций MySQL, но документация cpan содержит только простые примеры, которые бесполезны.
Я не смог придумать ничего, что понимает модуль.
Это SQL:
select d.account,d.invoice,d.company, d.note
from invoice i
join invoice d
on i.account = d.account
and ifnull(i.external_invoice,0) = ifnull(d.external_invoice,0)
and from_unixtime(i.invoice_date,'%Y-%m-%d') = from_unixtime(d.invoice_date,'%Y-%m-%d')
and d.invoice > i.invoice
Ниже я представляю, как это будет выглядеть
my ($sql,@bind) = SQL::Abstract::More->new->select(
-columns => [qw/d.account d.invoice d.company d.note/],
-from => [
-join => qw/invoice|i
<=> {
i.account=d.account,
ifnull(i.external_invoice,0)=ifnull(d.external_invoice,0),
from_unixtime(i.invoice_date,'%Y-%m-%d')=from_unixtime(d.invoice_date,'%Y-%m-%d'),
d.invoice>i.invoice
}
invoice|d
/
],
Я ожидаю генерации SQL, с которого я начал:
select d.account,d.invoice,d.company, d.note
from invoice i
join invoice d
on i.account = d.account
and ifnull(i.external_invoice,0) = ifnull(d.external_invoice,0)
and from_unixtime(i.invoice_date,'%Y-%m-%d') = from_unixtime(d.invoice_date,'%Y-%m-%d')
and d.invoice > i.invoice