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