SQL 쿼리에 대한 동적 필터그래서 저는 SQL에 대해 전혀 알지 못하므로 JMP Query Builder를 사용하고 모든 코드를 기반으로 했습니다.
기본적으로 사용자가 필터링할 열을 선택한 다음 필터링할 값을 선택할 수 있는 팝업 화면을 통해 원하는 데이터를 필터링할 수 있도록 하고 싶습니다.내 JMP 테이블의 모든 열은 내 데이터베이스의 유효한 열 이름입니다.그래서 키가 필터인 사용자가 선택한 모든 필터와 값을 보유하는 연관 배열을 생성한 지점에 도달했습니다.
내가 가진 문제는 "어디서"를 사용하여 실제 필터링을 수행할 수 있는 새 SQL 쿼리에 있습니다. 연관 배열을 어떻게 추가할 수 있는지 잘 모르겠습니다.
이 작업을 수행하는 더 좋은 방법이 있다고 확신합니다.이견있는 사람?
_dt = Current Data Table();
selection = Associative Array();
//Create a window to collect filter information
TestIdWindow = New Window( "Filters Window",
<<MODAL></MODAL>
Re: SQL 쿼리에 대한 동적 필터감사합니다 스티븐.오늘 제안을 시도해 보겠습니다.전체 SQL 쿼리를 Where 부분만 문자열로 만드는 것에 대해 생각하지 않았습니다.
필터링할 옵션이 5-12개 있다는 것에 대한 귀하의 의견은 실제로 초기 목표였습니다.하지만 그 다음에는 모든 사용자가 필터링하고 싶어할 5-12가지 항목을 결정할 수 없었습니다. 그래서 이미 몇 가지를 정적으로 할 수 있다면 동적으로 만드는 것이 얼마나 어려울까 잘 생각했습니다.그런 다음 폭발했고 여기 있습니다 
Re: SQL 쿼리에 대한 동적 필터SQL에서 _AllRows_라는 범주형 열을 사용할 때 사용자가 선택하지 않으면 호출할 수 있는 기능이 있습니다.
//window for selection
// get data
PickFilter = Function( {chosenCostCentre},
//{Default Local},
//deal with user making no choice
If(NItems(chosenCostCentre[1])==0,
chosenCostCentre[1] = "_AllRows_";
);
...그런 다음 동적 JSL을 사용하여 목록이 없는 경우 목록 대신 이 텍스트를 삽입할 수 있습니다.
...
//get report names from filter table
Eval(
Parse(
Eval Insert(
"\[
dtFilterNames = New SQL Query(
Connection( connectionString ),
QueryName( "RvwReports" ),
Select( Column( "ReportID", "t1" ), Column( "ReportName", "t1" ) ),
From( Table( "RvwReports", Schema( "dbo" ), Alias( "t1" ) ) ),
Where(
In List(
Column( "CostCentreCommon", "t1" ),
^chosenCostCentre[1]^,
UI( SelectListFilter( CheckBoxList, Base( "Categorical" ) ) )
)
)
) << Run Foreground( );
]\"
)
)
);마찬가지로 동적 JSL을 사용하면 각 절을 별도의 문자열로 작성할 수 있으며 기본값은 clause=""로 설정되어 있습니다. 사용자가 필터링할 열의 초기 목록에서 해당 열을 선택한 경우에만 업데이트합니다.
이 시점에서 가장 중요한 5-12개의 열이 무엇인지 미리 결정하여 사용자를 제한하지 않는 경우 내장 JMP 쿼리 빌더를 사용하지 않고 SQL 이후 JSL만 작성하는 이유는 무엇입니까?
Re: SQL 쿼리에 대한 동적 필터절 코드가 무엇인지 알고 있지만 사용자가 모든 열에 대해 특정 열에만 필터를 적용하고 싶지 않을 수 있습니다.일부 조항 코드가 아무것도 아닌 것과 비교하는 것이 괜찮습니까?
또한 거의 100개의 열이 있을 수 있으므로 각 열에 대해 절 코드를 명시적으로 추가하고 싶지 않습니다.
몇 개의 열로 테스트했지만 이 where 절을 동적으로 작성하려고 합니다.모든 절을 범주형으로 만들기 위해 코드에서 몇 가지 예방 조치를 취하고 있습니다... 하지만 In Lists와 함께 where 절을 동적으로 수행하는 방법을 알아내야 합니다.
Where(
In List(
Column( "Column 1", "t1" ),
{"some value 1",
"some value 2"},
UI( SelectListFilter( ListBox, Base( "Categorical" ) ) )
) & In List(
Column( "Column 2", "t1" ),
{Some value 3, some value 4},
UI( SelectListFilter( ListBox, Base( "Categorical" ) ) )
)
)
Re: SQL 쿼리에 대한 동적 필터먼저 사용자가 선택할 열에 수동으로 적용된 모든 필터를 사용하여 SQL 쿼리를 실행해 보십시오. 이것은 사용자가 선택한 값 목록을 넣을 수 있는 필수 where 절 코드를 생성합니다.