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?
>>
>