Tema: Re: Dar karta T-SQL select'as
Autorius: Jornada Del Muerto
Data: 2011-08-10 17:06:36
> 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 :)