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

Nick Knutov mail на knutov.com
Вт Дек 17 15:44:16 PST 2013


Не вижу, чем мне это может помочь.

В данном примере 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
> 
> 
> 
> 

-- 
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130


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