<html><head><meta http-equiv="Content-Type" content="text/html charset=koi8-r"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="p" style="font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">(</span><span class="s" style="color: rgb(221, 17, 68); font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">'?'</span><span class="p" style="font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">)</span><span style="font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); "> </span><span class="n" style="color: rgb(51, 51, 51); font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">x</span><span style="font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); "> </span><span class="o" style="font-weight: bold; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">~~</span><span class="nv" style="color: teal; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 12px; line-height: 16px; white-space: pre; background-color: rgb(255, 255, 255); ">@$l - изврат, можно просто ('?') x @$l</span><div><font color="#008080" face="Consolas, Liberation Mono, Courier, monospace"><span style="line-height: 16px; white-space: pre;">x сам по себе кастит scalar</span></font></div><div><font color="#008080" face="Consolas, Liberation Mono, Courier, monospace"><span style="line-height: 16px; white-space: pre;"><br></span></font><div><div>On 18.12.2013, at 12:20, Анатолий Гришаев <0body0@<a href="http://rambler.ru">rambler.ru</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">++ за идею.<br>-  за  прочитать несколько раз, чтобы вьехать.<br>+ за  ~~@$limit<br><br>18.12.2013 12:07, vividsnow пишет:<br><blockquote type="cite">как вариант что-то вроде:<br><a href="https://gist.github.com/vividsnow/8d294801959975730fc3">https://gist.github.com/vividsnow/8d294801959975730fc3</a><br>(возможно более специфичное к вашей задаче)<br><br>On 12/18/2013 03:44 AM, Nick Knutov wrote:<br><blockquote type="cite">Не вижу, чем мне это может помочь.<br><br>В данном примере posts_sql_view() возвращает нечто очень большое и<br>сложное, например селект с джойнами по куче таблиц из селекта с джойнами.<br><br>Как минимум, конструировать запрос мне надо начиная с того места, где<br>может быть WHERE. И, например, как тут - наличие LIMIT и его количество<br>зависит от других параметров.<br><br><br>18.12.2013 5:34, vividsnow пишет:<br><blockquote type="cite">https://metacpan.org/pod/SQL::Abstract<br><br><br>2013/12/18 Nick Knutov <mail@knutov.com <mailto:mail@knutov.com>><br><br>     У меня в коде в некоторых функциях, в зависимости от входных параметров,<br>     конструируются разные sql запросы. Пример:<br><br>     my $sql = posts_sql_view();<br>     $sql .= ' WHERE ' if $type or $id or $main;<br>     do { $sql .= ' ty.id =? '; push @params, $type;} if $type;<br>     do { $sql .= ' AND p.id =? LIMIT 1'; push @params, $id<br>     } if $id;<br>     $sql .= ' ORDER BY id DESC ' unless $id;<br>     do { $sql .= ' LIMIT ? ' ; push @params, $limit } if $limit and not $id;<br><br>     Мне не нравится как это визуально выглядит. Как бы вы это переписали,<br>     чтобы было понятнее и читабельнее?<br><br>     ps: в некоторых других случаях можно было бы использовать && вместо<br>     do{}, но не тут.<br><br>     pps: ORM предлагать и обсуждать не надо. Как минимум потому, что запросы<br>     сложные и сложность/стоимость проверки того, что генерирует ORM<br>     многократно выше любого профита от ORM в данной ситуации.<br><br>     --<br>     Best Regards,<br>     Nick Knutov<br>     http://knutov.com<br>     ICQ: 272873706<br>     Voice: +7-904-84-23-130 <tel:%2B7-904-84-23-130><br>     --<br>     Moscow.pm mailing list<br>     moscow-pm@pm.org <mailto:moscow-pm@pm.org> | http://moscow.pm.org<br><br><br><br><br></blockquote></blockquote></blockquote><br>-- <br>Moscow.pm mailing list<br><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org">http://moscow.pm.org</a><br></blockquote></div><br></div></body></html>