하위 퀴어에 대한 Subsonic에 쿼리를 어떻게 작성할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/843078

  •  20-08-2019
  •  | 
  •  

문제

Subsonic 2.2에서 다음 쿼리를 어떻게 할 수 있습니까?

select Table1.Id, Table1.Name, Table1.Age from Table1
where Table1.Id =
(
select Max(T.Id) from Table1 T
Where T.Age = 20
)

나에게 예를 제공 할 수 있습니다.

감사. NRK

도움이 되었습니까?

해결책

Subsonic 2.2는 하위 쿼리를 수행 할 수 있습니다.

Adam이 제안했듯이, 편집 및 개선 된 예제를 사용하여 다음과 같이 효과가 있습니다.

SubSonic.Select s = new SubSonic.Select(SSDAL.Customer.CustomerIDColumn, SSDAL.Customer.NameColumn);
SubSonic.Aggregate a = new SubSonic.Aggregate(SSDAL.Customer.CustomerIDColumn, SubSonic.AggregateFunction.Max);
SSDAL.CustomerCollection COL = new SSDAL.CustomerCollection();
SubSonic.Select sq = new SubSonic.Select("LastCustomerId");
sq.Aggregates.Add(a);
sq.From(Tables.Customer);
a.Alias = "LastCustomerId";
s.From(Tables.Customer);
s.Where(SSDAL.Customer.CustomerIDColumn).In(sq);
COL = s.ExecuteAsCollection<SSDAL.CustomerCollection>();
;

이 코드는 다음 SQL을 생성합니다.

SELECT [dbo].[Customer].[CustomerID], [dbo].[Customer].[Name]
 FROM [dbo].[Customer]
 WHERE [dbo].[Customer].[CustomerID] IN (SELECT MAX([dbo].[Customer].[CustomerID]) AS 'LastCustomerId'
 FROM [dbo].[Customer])

다른 팁

아담은 무언가에 있을지 모르지만 조금 못 생겼습니다. 다음은 IdataReader를 반환하는 좀 더 읽기 쉬운 예입니다.

new SubSonic.Select(Table1.IdColumn,Table1.NameColumn,Table1.AgeColumn)
.From(Table1.Schema)
.Where(Table1.IdColumn).In(new SubSonic.Select(Aggregate.Max(Table1.IdColumn)).From(Table1.Schema))
.ExecuteReader();

내가 아는 한, subsonic의 하위 쿼리에 대한 지원은 없습니다. 쿼리를 SPROC에 넣고 생성 된 sps.sprocName () 메소드를 사용해야합니다.

편집 : 나는 틀렸다. 아래의 다른 답변을 참조하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top