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-подсветка кода
This account has disabled anonymous posting.
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

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