to use the result column(s) of sub-select in another query expression; name or index can be specified.
Following section demonstrates using SUB SELECT clause.
// Table Aliases
var t0 = new Orders().AsQueryable();
var t1 = new OrderDetails().AsQueryable();
// query for the max [OrderDetailId] grouped by [OrderId]
var sub_select = Odb.SQL.Select(x =>
x.From(t1)
.GroupBy(t1.OrderID)
.Fields(
x[t1.OrderID].AS("Id"),
x[t1.OrderDetailID].MAX().AS("LastDetailId")
)
);
// Query (join [Orders] with [sub query])
var query = Odb.SQL.Select(x =>
x.From(t0).Top(5)
.LeftJoin( {{hl}}sub_select, sub_select["Id"].ToInteger() == t0.OrderID{{/hl}} )
.Fields( t0.OrderID, sub_select["LastDetailId"] )
);
QHUpM8
Following section demonstrates using SUB SELECT in a WHERE block.
var sub_select = Odb.SQL.Select(x =>
x.From(t1).Fields( x[t1.OrderID].DISTINCT() )
);
Odb.SQL.Select(x =>
x.From(t0)
.Where( {{hl}}x[t0.OrderID].IN(sub_select)){{/hl}} );
QHUpM8