Tema: Re: Dar karta T-SQL select'as
Autorius: Jornada Del Muerto
Data: 2011-08-11 14:34:53
Greiciausiai taip butu buve geriausiai daryti nuo pradziu :) butum jau senai padares - apie tokia lenta mes ne nezinojom su Bunny :). Tada tiesiog left/right outer joinais tik dajungi kitas lentas ir viskas ;) 

P.S. Vakar kai perskaiciau sitai:

> Beda ta , kad paprastai L lentelej nera tokiu irasu , kuriu yra LK . Ir butent ju nematau . 

Tai biski isspaude sypsena ;) Na bet visko buna, gyveni ir mokaisi.


"Rimokas" <rimasu@ut.lt> wrote in message news:j1vpbg$m1c$1@trimpas.omnitel.net...
> 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 :) 
> 
>