Article View: alt.pl.comp.lang.csharp
Article #21860Re: QueryOver i distinct
From: Macko
Date: Tue, 28 Dec 2010 12:14
Date: Tue, 28 Dec 2010 12:14
51 lines
3351 bytes
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-mailReferences:
<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