나는 중첩 NotIn 쿼리가 들어있는 다음 음속 3.0 쿼리가 있습니다Subsonic 3 ActiveRecord는 NotIn 버그를 중첩 선택합니까?
이public List<Order> GetRandomOrdersForNoReason(int shopId, int typeId)
{
// build query
var q = new SubSonic.Query.Select().Top("1")
.From("Order")
.Where("ShopId")
.IsEqualTo(shopId)
.And(OrderTable.CustomerId).NotIn(
new Subsonic.Query.Select("CustomerId")
.From("Customer")
.Where("TypeId")
.IsNotEqualTo(typeId))
.OrderDesc("NewId()");
// Output query
Debug.WriteLine(q.ToString());
// returned typed list
return q.ExecuteTypedList<Order>();
}
내부 쿼리가 잘못된 것으로 나타납니다
SELECT TOP 1 *
FROM [Order]
WHERE ShopId = @0 AND CustomerId NOT IN (SELECT CustomerId
FROM [Customer]
WHERE TypeId = @0)
ORDER BY NewId() ASC
당신은 두 매개 변수가 0 @ 것을 알 수 있습니다를. 각 매개 변수가 열거 된 (0에서 시작) 것으로 가정합니다. 각 "새"Select 쿼리. 그러나 두 개의 Select 쿼리가 중첩되어있는 경우에는 출력에 @ 0 및 @ 1이라는 두 개의 매개 변수가 있어야합니다.
이 내 쿼리 롭 Conery 3. 그분의 모범 음속되었다 "Pakala"쿼리 도구의 미리보기로 자신의 블로그에 준 one에 기반을했다 :
int records = new Select(Northwind.Product.Schema)
.Where("productid")
.In(
new Select("productid").From(Northwind.Product.Schema)
.Where("categoryid").IsEqualTo(5)
)
.GetRecordCount();
다른 사람이 동작을 본 적이 있습니까? 버그입니까, 아니면 오류입니까 아니면 제 부분입니까? 나는 Subsonic에 익숙하지 않기 때문에 프로그래머가이 부분에서 실수를 범한 것 같지만 가능한 경우 확인을 원합니다.