Thread View: alt.pl.comp.lang.csharp
5 messages
5 total messages
Started by Macko
Wed, 01 Dec 2010 08:33
[NH] QueryOver i distinct
Author: Macko
Date: Wed, 01 Dec 2010 08:33
Date: Wed, 01 Dec 2010 08:33
30 lines
1904 bytes
1904 bytes
Witam,
Query Over w NH 3.0 jak dla mnie to duży postęp jednak nie wiem jak
przepisać zapytania, które działa na tabeli intersekcji. Powiedzmy, że
mamy tabelę filmy_na_plycie, która składa sie z 3 kolumn:
id - PK, autonumerowanie
id_filmu - FK do tabeli filmów
id_plyty - FK do tabeli płyt
powiedzmy że chcemy mieć listę identyfikatorów filmów na płytach, easy
nie:
<sql>
select distinct id_filmu from filmy_na_plycie
</sql>
Teraz jak za pomocą .QueryOver zrobić to samo?
To niżej zadziała, ale nie poda listy unikalnych identyfikatorów:
var moviesOnCDs =
QueryOver.Of<FilmyNaPlycie>()
.Select(fnp => fnp.Film.id);
--
Pozdro,
Macko
Re: [NH] QueryOver i distinct
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 01 Dec 2010 09:40
Date: Wed, 01 Dec 2010 09:40
28 lines
1509 bytes
1509 bytes
On Wed, 1 Dec 2010 00:33:53 -0800 (PST), Macko wrote:
> <sql>
>
> select distinct id_filmu from filmy_na_plycie
>
> </sql>
>
> Teraz jak za pomocą .QueryOver zrobić to samo?
>
> To niżej zadziała, ale nie poda listy unikalnych identyfikatorów:
>
> var moviesOnCDs =
> QueryOver.Of<FilmyNaPlycie>()
> .Select(fnp => fnp.Film.id);
Nie mam teraz za bardzo czasu, ale wstępnie bym kombinował
dookoła:
QueryOver<FilmyNaPlycie>()
.Select(
Projections.Distinct(
Projections.Property<FilmyNaPlycie>(fnp => fnp.Film)));
Ale bez sprawdzenia nie daję głowy.
--
Pozdrawiam,
Łukasz 'Maly' Ostrowski. http://l3v.eu/
Re: QueryOver i distinct
Author: Macko
Date: Thu, 02 Dec 2010 08:58
Date: Thu, 02 Dec 2010 08:58
31 lines
2075 bytes
2075 bytes
On 1 Gru, 10:40, Łukasz 'Maly' Ostrowski <m...@USUNnemo.pl> wrote: > On Wed, 1 Dec 2010 00:33:53 -0800 (PST), Macko wrote: > > <sql> > > > select distinct id_filmu from filmy_na_plycie > > > </sql> > > > Teraz jak za pomoc .QueryOver zrobi to samo? > > > To ni ej zadzia a, ale nie poda listy unikalnych identyfikator w: > > > var moviesOnCDs = > > QueryOver.Of<FilmyNaPlycie>() > > .Select(fnp => fnp.Film.id); > > Nie mam teraz za bardzo czasu, ale wst pnie bym kombinowa > dooko a: > > QueryOver<FilmyNaPlycie>() > .Select( > Projections.Distinct( > Projections.Property<FilmyNaPlycie>(fnp => fnp.Film))); > > Ale bez sprawdzenia nie daj g owy. > > -- > Pozdrawiam, > ukasz 'Maly' Ostrowski. http://l3v.eu/ Spox, to jest właśnie to co chciałem :)
Re: QueryOver i distinct
Author: Macko
Date: Mon, 27 Dec 2010 09:05
Date: Mon, 27 Dec 2010 09:05
39 lines
2729 bytes
2729 bytes
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
Re: QueryOver i distinct
Author: 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ć?
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads