Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

LINQ opet problem sa join-ima

[es] :: .NET :: LINQ opet problem sa join-ima

[ Pregleda: 1461 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.static.isp.telekom.rs.



+2 Profil

icon LINQ opet problem sa join-ima10.11.2010. u 10:53 - pre 163 meseci
Ehhh...opet imam jedan zavrzlama SQL upit da prebacim u LINQ...
Code:

it3.svalue as Comment, 
it4.svalue as Description, 
it5.svalue as Manual 
from items i
left outer join items_translations it on it.iitem_id = i.id 
left outer join stores s on s.id = i.istore_id 
left outer join items_types itypes on itypes.id = i.iorder_types_id 
left outer join storehouses sh on sh.id = i.istorehouse_id 
left outer join items_translations it3 on it3.itype_id = 3  // odavde
left outer join items_translations it4 on it4.itype_id = 4
left outer join items_translations it5 on it5.itype_id = 5 // do ovde je problem
where i.id = 349 and it.slanguage = 'en' and  it3.slanguage = 'en' and it4.slanguage = 'en' and 
it5.slanguage = 'en' and  
it.itype_id = 1 and it3.iitem_id = i.id 
 and it4.iitem_id = i.id  and it5.iitem_id = i.id 

Problem je u ovim it3 it4 it5 join-ima. Probao sam nesto al ne ide...
Code:

...
 on i.IstorehouseId equals sh.Identification
                         /*join it3 in myItemTranslationList
                         on 3 equals it3.ItypeId
                         join it4 in myItemTranslationList
                         on 4 equals it4.ItypeId
                         join it5 in myItemTranslationList
                         on 5 equals it5.ItypeId*/
                         where i.Identification == itemId && it.Slanguage == "en" && it.ItypeId == 1
                         select new
...
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: LINQ opet problem sa join-ima10.11.2010. u 11:16 - pre 163 meseci
To ti ej u stvari pivoting subquery Inace ti ni onaj SQL gore nije bas optimizovan, izgleda kao zesci abuse left joina za ovakve stvari napravis view koji je pivoter i onda vuces iz njega. Dalje mi je bas cudno da si komparaciju sa konstantom drzao u joinu a linkovanje sa drugom tableo m u where? Radi naravno, ali nije bas intuitivno

Sto se tice LINQ varijante, pivot nije direktno podrzan, moras da napravis prvo IQueryable<T> koji ima samo pivot (koristis Group da grupises po jezicima i unutar grupe sa where podelis na kolone po itype_id, svaka kolona je jedan tip 3,4,5) i da onda taj Iqueryable joinujes u svoj query u drugom koraku preko iitem_id (tehnicki mozes i u jedan posle da ih spojis al za pocetak da bi shvatio kako ovo radi). Sad nemam alat pri ruci pa ne mogu vise od ovog da ti pomognem, probaj pa ako zapnes videcu veceras da ti dam konkretan primer


Btw, posto vidim da se bas aktivnije zanimas sa LINQom, pogeldaj ovu alatku http://www.linqpad.net/ pomoci ce ti sigurno sa eksperimentisanjem.

PS: I btw, obrati paznju da prevod za item mozda ne postoji za taj jezik. Znaci da moras da radis outer join koji takodje nije direktno podrzan, vec moras indirektno kroz multiple from/defaultifempty vidi http://stackoverflow.com/quest...-sql-multiple-left-outer-joins
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: LINQ opet problem sa join-ima

[ Pregleda: 1461 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.