eldhenn: (Default)
[personal profile] eldhenn
Но нельзя сказать, что я здесь не получаю скилла.
Фиг бы я полгода назад написал вот такое:




SELECT
    sel.inserted as login,
    MAX(stats.inserted) as logout, e.name||' ('||sel.aext||')' as name,
    MAX(stats.inserted)-sel.inserted as dura
FROM
    stats RIGHT JOIN
        (SELECT MAX(inserted) as inserted, aext FROM stats WHERE anum='LOG IN' GROUP BY aext ORDER BY inserted DESC) sel
        ON (sel.aext=stats.aext AND stats.inserted>sel.inserted AND stats.anum='LOG OUT')
        INNER JOIN employees e
        ON sel.aext=e.intercom
GROUP BY sel.aext, sel.inserted, name
ORDER BY logout DESC, login DESC;Syhi-подсветка кода


Или провести вручную выборку нескольких разных типов событий из базы (отдельными несвязанными запросами), и вручную их раскладывать в порядке поступления. Час или два думал, но придумал. Делаем хэш со ссылками на события по датам, выбираем из базы только событие того типа, которого нет в хэше, тут же его добавляем туда, записываем в выходной поток событие с минимальной датой (сортировка по ключам хэша, выбор первого), удаляем это событие из хэша. Всё. Красота, блин!

FILL_DATA: {
        if (defined $ref_needed && $last_inserted!=$ref_needed)
        {
                $ref_needed=process_needed ($sth_needed->fetchrow_hashref()) if defined $ref_needed;
                $triple{$ref_needed->{'inserted'}}=$ref_needed if defined $ref_needed;
        }
        if (defined $ref_na1 && $last_inserted!=$ref_na1)
        {
                $ref_na1=process_needed ($sth_needed->fetchrow_hashref()) if defined $ref_na1;
                $triple{$ref_na1->{'inserted'}}=$ref_na1 if defined $ref_na1;
        }
        if (defined $ref_na2 && $last_inserted!=$ref_na2)
        {
                $ref_na2=process_needed (&get_next_na2($sth_na2)) if defined $ref_needed;
                $triple{$ref_na2>{'inserted'}}=$ref_na2 if defined $ref_na2;
        }

        $last_inserted=(sort {$a<=>$b} keys %triple)[0];
        delete $triple{$last_inserted};
        push @data, {%$last_inserted};
} #FILL_DATA ENDSyhi-подсветка кода

Profile

eldhenn: (Default)
Элдхэнн

Tags

September 2022

S M T W T F S
    123
45678910
11121314151617
181920 21222324
252627282930 

Expand Cut Tags

No cut tags