как вариант что-то вроде: https://gist.github.com/vividsnow/8d294801959975730fc3 (возможно более специфичное к вашей задаче)
On 12/18/2013 03:44 AM, Nick Knutov wrote: > Не вижу, чем мне это может помочь. > > В данном примере posts_sql_view() возвращает нечто очень большое и > сложное, например селект с джойнами по куче таблиц из селекта с джойнами. > > Как минимум, конструировать запрос мне надо начиная с того места, где > может быть WHERE. И, например, как тут - наличие LIMIT и его количество > зависит от других параметров. > > > 18.12.2013 5:34, vividsnow пишет: >> https://metacpan.org/pod/SQL::Abstract >> >> >> 2013/12/18 Nick Knutov <[email protected] <mailto:[email protected]>> >> >> У меня в коде в некоторых функциях, в зависимости от входных параметров, >> конструируются разные sql запросы. Пример: >> >> my $sql = posts_sql_view(); >> $sql .= ' WHERE ' if $type or $id or $main; >> do { $sql .= ' ty.id =? '; push @params, $type;} if $type; >> do { $sql .= ' AND p.id =? LIMIT 1'; push @params, $id >> } if $id; >> $sql .= ' ORDER BY id DESC ' unless $id; >> do { $sql .= ' LIMIT ? ' ; push @params, $limit } if $limit and not $id; >> >> Мне не нравится как это визуально выглядит. Как бы вы это переписали, >> чтобы было понятнее и читабельнее? >> >> ps: в некоторых других случаях можно было бы использовать && вместо >> do{}, но не тут. >> >> pps: ORM предлагать и обсуждать не надо. Как минимум потому, что запросы >> сложные и сложность/стоимость проверки того, что генерирует ORM >> многократно выше любого профита от ORM в данной ситуации. >> >> -- >> Best Regards, >> Nick Knutov >> http://knutov.com >> ICQ: 272873706 >> Voice: +7-904-84-23-130 <tel:%2B7-904-84-23-130> >> -- >> Moscow.pm mailing list >> [email protected] <mailto:[email protected]> | http://moscow.pm.org >> >> >> >> > -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
