[Moscow.pm] конструкторе sql запросов
Mons Anderson
mons на cpan.org
Ср Дек 18 00:49:59 PST 2013
('?') x ~~@$l - изврат, можно просто ('?') x @$l
x сам по себе кастит scalar
On 18.12.2013, at 12:20, Анатолий Гришаев <0body0 на 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 | http://moscow.pm.org
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20131218/4b7db8db/attachment-0001.html>
Подробная информация о списке рассылки Moscow-pm