NHibernate Query with joins and group by
Tag : chash , By : Bimal Poudel
Date : March 29 2020, 07:55 AM
seems to work fine I have 4 assoiciated classes and need to do a query. , can you test this: Process processAlias = null;
Association assocAlias = null;
FieldOfActivity actAlias = null;
var subquery = QueryOver.Of<MonthCapacity>()
.Where(m => m.Association == assocAlias)
.Select(Projections.Sum<MonthCapacity>(m => m.Hours));
var results = session.QueryOver<Project>()
.JoinQueryOver(p => p.Processes, () => processAlias)
.JoinQueryOver(p => p.Associations, () => assocAlias)
.JoinAlias(p => p.FieldOfActivity, () => actAlias)
.Select(p => new ChartDto { Project = p, FieldOfActivity = actAlias, Hours = Projections.Subquery(subquery) })
.List();
var results = session.QueryOver<Project>()
.JoinQueryOver(p => p.Processes, () => processAlias)
.JoinQueryOver(p => p.Associations, () => assocAlias)
.JoinAlias(p => p.FieldOfActivity, () => actAlias)
.SelectList(list => list
.Select(p => new ChartDto { Project = p, FieldOfActivity = actAlias, Hours = 0 })
.Select(Projections.Subquery(subquery))
)
.List<object[]>()
.Select(objects =>
{
var chart = (ChartDto)objects[0];
chart.Hours = (int)objects[1];
return chart;
});
|
nhibernate group by join query
Date : March 29 2020, 07:55 AM
like below fixes the issue I have the following entities: var list =
this.Session.Query<Shift>().Select(
p => new
{
Shift = p,
LastShiftHistory =
this.Session.Query<ShiftHistory>()
.Where(sh => sh.Shift == p)
.OrderByDescending(sh => sh.ShiftEndLocal)
.Select(sh => sh)
.FirstOrDefault()
})
.ToList();
|
NHibernate query latest N per group
Date : March 29 2020, 07:55 AM
I wish this help you I have the following domain mapped through FluentNHibernate , Join the group by result with the original rows and return the rows: rows.Join(
rows.GroupBy(x => new {x.Location, x.Hour}),
x => new {x.Location, x.Hour, x.Available},
g => new {g.Key.Location, g.Key.Hour, Available = g.Max(p=>p.Available)},
(x1,g1) => x1
)
SELECT [t0].*
FROM [rows] AS [t0]
INNER JOIN (
SELECT MAX([t1].[Available]) AS [value], [t1].[Location], [t1].[Hour]
FROM [rows] AS [t1]
GROUP BY [t1].[Location], [t1].[Hour])
AS [t2] ON (
[t0].[Location] = [t2].[Location])
AND ([t0].[Hour] = [t2].[Hour])
AND ([t0].[Available] = [t2].[value]
)
|
How to use Max and Group By in an NHibernate query?
Tag : chash , By : user107506
Date : March 29 2020, 07:55 AM
will help you How would I do the following query using NHibernate? , Managed to work it out, was more simple than I thought in the end: var result = from item in session.Linq<Item>()
group item by item.ClientId
into itemGroups
select new
{
id = itemGroups.Key,
max = itemGroups.Max(er => er.Id)
};
|
Django Query: Group by field and get the latest entry per group
Date : March 29 2020, 07:55 AM
it helps some times looks like you need to add empty order_by() by the default-ordering-or-order-by in the result query can be added extra fields to the group by. try it: Market.objects.values('slug').annotate(Max('active')).order_by()
|