2012-06-27 8 views
0

저는 RIA 서비스와 MySQL 데이터베이스가있는 Silverlight 5 환경에서 작업하고 있습니다. 나는 약 20 개의 다른 위치가 저장된 테이블을 가지고있다. Contains 나 LIKE 중 하나를 사용하여 가능한 20 개 위치 모두의 가능한 문자열 일치에 대해 각 레코드를 검사해야합니다. 위치 일치가 레코드에서 발견되면 해당 레코드의 일부 필드 만 필요합니다. 다른 19 개 위치의 데이터가 아닙니다. 검사중인 레코드에 일치하는 항목이 없으면 아무 것도 저장되지 않습니다. 나는 RIA와의 상실감에 처해있다. 나는 20 개 또는 그 이상의 쿼리를 작성할 수 있지만 일치하는 것이 발견되면 전체 레코드가 반환됩니다.이 레코드는 DataGrid에 표시되며 검색 필드는 20 개 위치 중 하나에있을 수 있으므로 원하지 않는 필드를 숨길 수는 없습니다 . 엔티티 프레임 워크가 쿼리 할 수 ​​있도록 중첩 루프 루틴을 MySQL 함수 또는 프로 시저에 저장할 수 있습니까? 그렇다면 올바른 방향으로 구문 푸시를 제공 할 수 있습니까? 미리 Thx.MySql 저장 프로 시저 또는 함수?

+0

왜 [documentation] (http://dev.mysql.com/doc/refman/5.5/en/create-procedure.html)을 읽지 않습니까? – Jocelyn

+0

20 개 중 하나의 문자열입니까? 그렇다면 당신은 그것들을 연결 만하면됩니다. 성능은 훨씬 뛰어납니다. –

답변

0

예를 들어, col1, col2 ..., col20, your_table에 열 이름을 가정합니다.

다음 쿼리는 레코드에서 일치하는 첫 번째 일치하는 값을 가져 오는 데 도움이 될 수 있습니다.

SET @criteria='%searh criteria%'; -- search string 
SET @none_matched=NULL; -- use this alternative if none matched 
SELECT 
IF(col1 like @criteria, col1, 
    IF(col2 like @criteria, col2, 
     IF(col3 like @criteria, col3, 
--   // 'if's until 'col20' 
      @none_matched) ...) as 'your_label' -- make sure you have 20 closing braces 
FROM your_table; 

이 유형의 쿼리를 사용하여 성능에 대해 확신 할 수 없습니다.
또는 저장 프로 시저에 의존 할 수 있습니다.