Tema: Re: Dar karta T-SQL select'as
Autorius: Rimokas
Data: 2011-08-11 08:29:20
Jornada Del Muerto,

 Yra dvi lentos - judejimo ( inventtrans ) ir likuciu ( utinvremainmonth ) . 
Juose irasai gali but pasiskirste visais imanomais variantais ( daugiau , 
maziau ir t.t. ) . Galvoju , kad select'as blogai sustatytas . Visus 
imanomus irasus kaip jungiancius turi  inventDim . Vadinasi reiktu pradet 
nuo jo , jungt prie jo judejimo ir likuciu failus , atsifiltruot uz 
laikotarpi , agreguot ...
Bandysiu taip padaryt ...

>> Bandant jusu nurodyta
>> "isnull(lenta.id,likuc.id), isnull(lenta.konfig_id,likuc.konfig_id)" ,
>
>
> = ISNULL =
>
> ISNULL  biski ne tam skirtas, funkcija ISNULL( X, Y ) jeigu X buna NULL 
> grazina Y reiksme, o jei X ne NULL grazina X reiksme, kur Y nereikia kisti 
> kito kazkokio lauko jei tai buvo outer/left join'as tai tik reiskia kad 
> ner jokio yraso jungiamoje lentoje ir IsNull(laukas, reiksme_null_atveju) 
> naudojasi tik kad neluztu ivairios agregacijos ar kad pvz vietoj null 
> grazint ''.
>
> = DEL JOIN'u =
>
> Na 1 as imciau kaip bazine lenta ta kuri turi visus irasus, o tada kita 
> lenta jungi LEFT join (tiesiog man taip lengviau galvojasi), bet jeigu 
> darai atbulai naudoji RIGHT join.
>
> 1. FROM L1 LEFT JOIN L2 <- siuo atveju is L1 ims visus irasus 
> nepriklausomai ar L2 bus jungiamasis irasas. Kitaip sakant visi  L2 lentos 
> laukai neesant jungiamajam irasui bus NULL!
>
> 2. FROM L1 RIGHT JOIN L2 <- siuo atveju imi visus irasus is L2 
> nepriklausomai ar L1 turi jungiamaji irasa. Kitaip sakant visi L1 lentos 
> laukai neesant jungiamajam irasui bus NULL!
>
> Vat kada laukai buna NULL del to kad nera jokio iraso - pries bet koki 
> darba su jais naudojasi ISNULL(x,y) funkcija, pvz atlieki skaiciavima 
> kazkoki ir jei koks nors SUM, COUNT ir t.t. . gaus NULL tai mes errora 
> taspats su betkokiu kitu to lauko salyginiu naudojimu.
>
>
> = TAVO ATVEJU =
>
> Tavo atveju kaip matau:
>
>> from lenta
>> group by lenta.id, lenta.konfig_id, lenta.datos
> ....
>>  tuomet nematau irasu , kuriu judejimo nebuvo  , t.y. "lenta" lenteleje 
>> tokiu irasu nera .  Kaip sujungti tokias lentas ?
>
> Kad bazine lenta ta kurios ne visi irasai yra, o tai reiskia:
>
> 1. 2 lenta jungi su RIGHT join;
> 2. Turi omenyje kad bet bet kuris lenteles "lenta" laukas  bet kada - gali 
> buti NULL! tai reiskia kad greiciausiai - juos visus teks apdirbti su 
> IsNull funkcija.
>
> Toliau einu paziuresiu ta tavo uzklausa nes jau cia visi susivelem :)