2017-04-06 3 views
1

를 파라미터 화 I가 다음과 같은 사용자 정의 OrmLite와 SQL 쿼리 : 는 ServiceStack 사용자 정의 SQL 쿼리

var results = db.Select<Tuple<Customer,Purchase>>(@"SELECT c.*, 0 EOT, p1.* 
    FROM customer c 
    JOIN purchase p1 ON (c.id = p1.customer_id) 
    LEFT OUTER JOIN purchase p2 ON (c.id = p2.customer_id AND 
     (p1.date < p2.date OR p1.date = p2.date AND p1.id < p2.id)) 
    WHERE p2.id IS NULL;"); 

절가, 예를 들어, 특정 고객 이름 필드를 필터링 WHERE 옵션을 추가 할 수있는 가장 좋은 방법은 무엇입니까

때 필드에 값이 있거나 페이지 매김을 쿼리에 추가 할 수 있습니까? 당신이 사용자 정의 SQL로 작업하는 경우

+0

@stackoverflow.com/a/37847762/193634 –

+0

@RosdiKasim 어떻게 WHERE 절을 선택적으로 만들 수 있습니까? – kolrie

답변

2

당신은 예컨대, 추가 쿼리를 직접 구성해야합니다 Live Example of this is available on Gistlyn

var sql = @"SELECT c.*, 0 EOT, p1.* 
    FROM customer c 
    JOIN purchase p1 ON (c.id = p1.customer_id) 
    LEFT OUTER JOIN purchase p2 ON (c.id = p2.customer_id AND 
     (p1.date < p2.date OR p1.date = p2.date AND p1.id < p2.id)) 
    WHERE p2.id IS NULL"; 

//string name = "Customer Name"; 
string name = null; 
if (name != null) 
{ 
    sql += "\nAND name = @name"; 
} 

int? limit = 100; 
if (limit != null) 
{ 
    sql += $"\nLIMIT {limit}"; 
} 

var results = db.Select<Tuple<Customer,Purchase>>(sql, new { name }); 

합니다.