🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #21860

Re: QueryOver i distinct

#21860
From: Macko
Date: Tue, 28 Dec 2010 12:14
51 lines
3351 bytes
On 27 Gru, 10:05, Macko <maciej_rych...@o2.pl> wrote:
> A więc zabawy z NH3 ciąg dalszy. Tym razem stanąłem na popularnym
> temacie tworzenia "summarisów" tzn podsumowań np. raportowych. W moim
> przypadku chcę wyświetlić listę filmów wraz z liczbą gatunków
> powiązanych z każdym filmem. Takie standardowe podsumowanie
> przykładowo:
>
> id | Tytuł pl | Tytuł obcy | Data premiery | Licznik gatunków
> -----------------------------------------------------------------
> 3  | bla      | bla bla    | 1990-01-01    | 2
>
> Za pomocą czystego SQLa załatwiłbym to tak
>
> select f.*, isnull(fg.licznik, 0) as licznik_gatunkow
> from dbo.film f left join
> (
> select id_filmu, count(id_gatunku) as licznik
> from dbo.gatunki_filmow
> group by id_filmu
> ) fg on f.id = fg.id_filmu
>
> Agregacja zliczająca gatunki dla każdego filmu za pomocą QueryOver
> wygląda u mnie tak:
>
> GenreSummary alias = null;
> var genresQuery = QueryOver.Of<GatunkiFilmow>()
> .SelectList(lista => lista
> .SelectGroup(o => o.Film.Id).WithAlias(() => alias.MovieId)
> .SelectCount(o => o.Gatunek).WithAlias(() => alias.GenresCount))
> .TransformUsing(Transformers.AliasToBean<GenreSummary>());
>
> Teraz jak to pożenić z encją Film tzn. zjoinować id filmu tą agregacją
> powyżej i zwrócić nową encją MovieSummary, która będzie się różniła od
> encji Film dodatkową kolumną powiedzmy GenresCount typu int.
>
> Czy da to radę pożenić za pomocą QueryOver?
>
> --
> Pozdro,
>  Maćko

Dobra, poradziłem sobie chociaż wyprodukowany przez NH3 SQL nie jest
do końca optymalny.

Teraz jak joinować encję nie tylko z encjami powiązanymi z tą encją,
ale także z encjami głębiej. Tzn: mam encję DVD to mogę wykonać
joinqueryover tylko z encją MovieOnDVD, która w DVD jest listą. Chcę
także wykonać joina encjami powiązanymi z encją MovieOnDVD czyli np
Movie.

Jak to zrobić?
Technical Details
Message-ID: <43ed0233-8132-4f3a-9aba-e006077930ab@l17g2000yqe.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!l17g2000yqe.googlegroups.com!not-for-mail
References: <c4f37da9-ac9a-46e8-9a15-aa7f952f8c1e@p7g2000prb.googlegroups.com> <9pudeanfk8hj$.1ipmya1k3869o$.dlg@40tude.net> <e71194eb-5fd4-4189-808a-56154cb4b273@d24g2000prj.googlegroups.com> <fcba19dc-7822-402e-bfed-fa5145814519@l8g2000yqh.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!l17g2000yqe.googlegroups.com!not-for-mail
From: Macko <maciej_rychter@o2.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: QueryOver i distinct
Date: Tue, 28 Dec 2010 04:14:54 -0800 (PST)
Organization: http://groups.google.com
Lines: 56
Message-ID: <43ed0233-8132-4f3a-9aba-e006077930ab@l17g2000yqe.googlegroups.com>
References: <c4f37da9-ac9a-46e8-9a15-aa7f952f8c1e@p7g2000prb.googlegroups.com> <9pudeanfk8hj$.1ipmya1k3869o$.dlg@40tude.net> <e71194eb-5fd4-4189-808a-56154cb4b273@d24g2000prj.googlegroups.com> <fcba19dc-7822-402e-bfed-fa5145814519@l8g2000yqh.googlegroups.com>
NNTP-Posting-Host: 80.94.182.136
Mime-Version: 1.0
X-Trace: posting.google.com 1293538494 29872 127.0.0.1 (28 Dec 2010 12:14:54 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Tue, 28 Dec 2010 12:14:54 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: l17g2000yqe.googlegroups.com; posting-host=80.94.182.136; posting-account=0cTB9goAAAB7t_2APYrUFcRoIbYIHqOb
User-Agent: G2/1.0
X-HTTP-Via: 1.1 webwasher (Webwasher 6.8.7.8846)
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 ( .NET CLR 3.5.30729),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit