Tema: Re: MSSQL 2008 ir prioritetinis duomenu istraukimas
Autorius: 2x50
Data: 2012-04-12 22:15:35
Tygi paprasta :)
Visu pirma reiktu sukurta lenta (ar kazkaip pakeisti esamas lentas), kur 
butu fiksuojamos siuntos su realiomis kainomis ir kainas itakojanciais 
faktoriais tada, kai siunta atsiranda realiam pasaulyje (mazdaug - klientas, 
miestas, svoris, paskaiciota kaina). Menesio gale paprasta uzklausa su 
grupavimu is tos lentos veiks greitai.
Juo labiau, kad cia itraukti pinigai ir formuojama saskaita. Generuoti 
saskaita is kainu menesio pabaigoj yra pakankamai rizikinga, nes ansciau ar 
veliau bus taip, kad kuriant siunta bus paskaiciuota viena kaina, o kuriant 
saskaita bus paskaiciuota kita kaina uz ta pacia siunta.
Beje, siulyciau pagalvot ir apie tai, ar issiutos saskaitos neturetu buti 
kazkokia forma issaugomos, ypas jei jos gali tureti skirtingus statusus pvz. 
issiusta, suderinta, patvirtina, atmesta, koreguota ar pan...

"Jornada Del Muerto"  wrote in message 
news:jm3j1l$gu5$1@trimpas.omnitel.net...

    Ne cia gale menesio formuojama saskaita faktura, beje klientai gali 
turet ir tukstancius issiustu siuntu/laisku per 1 menesi ar net tukstancius 
per diena (pvz. visoki spameriai, kaip bankai ar kokios GSM bendroves), tai 
duomenu buna padoriai :) nes paprastai po menesio spausdinama simtam ar net 
tukstanciam klientu fakturos, aisku vienu metu po 1, bet tai pvz gali daryti 
10 vadybininku :) na pakolkas kaip ir sukasi, bet uzsakovas turi fantazija 
sioje vietoje vis kazka patobulinti, praplesti tuo paciu ir plecia savo 
veikla, kaip sakant sistema tobuleja beveik kiekviena menesi kazkuo :)

    Del to vat ir mastau apie optimizacijas :)

"zZz" <zZz@zirzilia.lt> wrote in message 
news:jm27jp$hlq$1@trimpas.omnitel.net...
> Čia kas? Funkcija?
>
> "Jornada Del Muerto" <jornada@lythum.lt> wrote in message
> news:jm1msp$3lq$1@trimpas.omnitel.net...
>> Sveiki,
>>
>>    Turiu tokia situacija su MSSQL 2008, kada reikia istraukti tam tikra
>> informacija prioriteto tvarka isrenkant viena ar kita irasa is lentos.
>>
>>    Trumpai aktuali traukimui struktura:
>>
>> Siuntos
>> ----------
>> Id
>> KlientoId
>> MiestoId
>> GatvesId
>> Svoris
>>
>> SiuntuKainos
>> ----------
>> Id
>> KlientoId
>> MiestoId
>> SvorisNuo
>> SvorisIki
>>
>> Dilema ta, kad kainu yra 4 tipai (tiksliau nuo siol bus).  Egzistuoja
>> (jeigu id=0 reiskia skirta visiems):
>>
>> 1. Bendros/globalios kainos siuntoms (KlientoId = 0, miestoId = 0);
>> 2. Bendros/globalios kainos konkreciam miestui (KlientoId = 0, miestoId =
>> X) - (sis kainos variantas atsiras tik dabar);
>> 3. Kliento bendros kainos (KlientoId = X, miestoId = 0);
>> 4. Kliento kainos konkreciam miestui (KlientoId = X, miestoId = X).
>>
>> Prioriteto tvarka bandoma priskirti sias kainas: 4, 3, 2, 1.
>>
>>    Kaip sakant jei klientas turi savo kainas konkreciam miestui tai jas,
>> jei tam miestui ner, bet yra aplamai kliento kaina, tada priskiriama ji,
>> jeigu nera kliento kainu bet globalios kainos turi kainas tam miestui tai
>> si kaina, jeigu nera siam miestui globalios kainos tada bendra kaina.
>>
>>
>> Siuo momentu as darau taip:
>>
>> SELECT
>>    kainosId,
>>    CASE
>>        WHEN K4.Id Is Not Null  THEN K4.Id
>>        WHEN K3.Id Is Not Null THEN K3.Id
>>        WHEN K2.Id Is Not Null THEN K2.Id
>>        ELSE K1.Id END AS "priceId",
>>   ......... kiti laukai....
>> FROM
>>    Siuntos S
>> LEFT JOIN
>>    SiuntuKainos K1 On K1.KlientasId = 0 And K1.MiestasId = 0 And S.Svoris
>> BETWEEN K1.SvorisNuo And K1.SvorisId And ...kitos salygos...
>> LEFT JOIN
>>    SiuntuKainos K2 On K2.KlientasId = 0 And K2.MiestasId = S.MiestasId 
>> And
>> S.Svoris BETWEEN K2.SvorisNuo And K2.SvorisId And ...kitos salygos...
>> LEFT JOIN
>>    SiuntuKainos K3 On K3.KlientasId = S.KlientasId And K3.MiestasId = 0
>> And S.Svoris BETWEEN K3.SvorisNuo And K3.SvorisId And ...kitos salygos...
>> LEFT JOIN
>>    SiuntuKainos K4 On K4.KlientasId = S.KlientasId And K4.MiestasId =
>> S.MiestasId And S.Svoris BETWEEN K4.SvorisNuo And K4.SvorisId And 
>> ...kitos
>> salygos...
>>
>>
>> Tai vat, kokie pasiulymai optimizuoti si shmota? :)
>>
>> PS.
>>    Viskas kaip ir veikia, tik dabar reikes dadeti kaina Nr 2 (Globalios
>> miestu kainos), tai susimasciau gal cia ka eitu pagerinti?
>>
>