[Moscow.pm] конструкторе sql запросов

vividsnow vividsnow на gmail.com
Ср Дек 18 00:58:01 PST 2013


точно, fixed

On 12/18/2013 12:49 PM, Mons Anderson wrote:
> ('?')x~~@$l - изврат, можно просто ('?') x @$l
> x сам по себе кастит scalar
> 
> On 18.12.2013, at 12:20, Анатолий Гришаев <0body0 на rambler.ru
> <http://rambler.ru>> wrote:
> 
>> ++ за идею.
>> -  за  прочитать несколько раз, чтобы вьехать.
>> + за  ~~@$limit
>>
>> 18.12.2013 12:07, vividsnow пишет:
>>> как вариант что-то вроде:
>>> 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 <mail на knutov.com <mailto:mail на knutov.com>>
>>>>>
>>>>>     У меня в коде в некоторых функциях, в зависимости от входных
>>>>> параметров,
>>>>>     конструируются разные 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
>>>>>     moscow-pm на pm.org <mailto:moscow-pm на pm.org> | http://moscow.pm.org
>>>>>
>>>>>
>>>>>
>>>>>
>>
>> -- 
>> Moscow.pm mailing list
>> moscow-pm на pm.org <mailto:moscow-pm на pm.org> | http://moscow.pm.org
> 
> 
> 


Подробная информация о списке рассылки Moscow-pm