Tema: Re: SQL
Autorius: Jornada Del Muerto
Data: 2010-04-15 17:25:02
Tavo atveju 1 klaidingas irasas ir viskas gali but sutraktuota atbulai... pradzia palaikyta pabaiga ar pabaiga pradzia, jei pvz programos darbo metu buvo luzis ar dar kazkas, zodziu cia jovalas kaip reikiant...

Darant normaliai tau cia reikia dar 2 lauku:

1. Bit  - isSessionBegin su galimom reiksmem true/false
2. SessionId - kur vienos sesijos visiem irasam butu priskirtas toks pat identifikatorius

Tada triviali uzklausa gaunasi:

Select 
    Begin.Data, End.Data 
From
    tavoLenta Begin
Left Join
    tavoLenta End On
Begin.SessionId = End.SessionId And End.isSessionBegin = 0

Where
    Begin.isSessionBegin = 1

P.S. Siaip uz tokias DB architekturas reiketu per nagus gerai duoti...


"NicMC" <easy@freemail.lt> wrote in message news:hq6b9g$ur9$1@trimpas.omnitel.net...
> Sveiki,
> 
> Yra lenta:
> 
> 
> +----------------------+
> | 20010-01-01 12:35:42 |
> +----------------------+
> | 20010-01-01 12:35:45 |
> +----------------------+
> | 20010-01-18 10:02:02 |
> +----------------------+
> | 20010-01-18 10:02:05 |
> +----------------------+
> | 20010-01-18 10:02:08 |
> +----------------------+
> | 20010-02-13 12:35:42 |
> +----------------------+
> | 20010-02-13 12:35:48 |
> +----------------------+
> 
> t.y. tiesiog paprasti datetime. Įrašai eina grupėmis, t.y. tai nėra 
> nuolatos pildoma lentelė. Tarpai tarp grupių - nuo minučių iki dienų.
> Reikia gauti laikus kada yra įrašai. Bet ne visus laikus, o kiekvienos 
> grupės pradžią ir pabaigą. Nu, arba vidurį. T.y. šitoj konkrečioj lentoj 
> priimtinas atsakymas būtų:
> 
> +----------------------+----------------------+
> | 20010-01-01 12:35:42 | 20010-01-01 12:35:45 |
> +----------------------+----------------------+
> | 20010-01-18 10:02:02 | 20010-01-18 10:02:08 |
> +----------------------+----------------------+
> | 20010-02-13 12:35:42 | 20010-02-13 12:35:48 |
> +----------------------+----------------------+
> 
> arba laikai viduryje intervalų:
> +----------------------+
> | 20010-01-01 12:35:44 |
> +----------------------+
> | 20010-01-18 10:02:05 |
> +----------------------+
> | 20010-02-13 12:35:45 |
> +----------------------+
> 
> arba intervalų pradžios:
> +----------------------+
> | 20010-01-01 12:35:42 |
> +----------------------+
> | 20010-01-18 10:02:02 |
> +----------------------+
> | 20010-02-13 12:35:42 |
> +----------------------+
> 
> vienžo belekas, kas leistų atskirti kada gi buvo sudėlioti tie įrašai. 
> Selektint visus laikus ir analizuot galimybės nėra - įrašų milijonai. 
> Selectinant grupuot nesigauna, nes laikai skiriasi.
> 
> Šiuo metu datetime yra floatinamas, kažkiek apvalinamas, vėl atgal į 
> datetime ir grupuojama. Problema - trūksta tikslumo.
> 
> Jei kažką keičia, db - oracle.
> 
> Ačiū bent jau perskaičiusiems iki galo :)