2014-09-03 3 views
2

는 I은 이와 같은 구조에 의해, 테이블, 채무자 있습니다외래 키로 구성된 선택 목록을 사용하여 레코드를 어떻게 선택합니까?

DEBTOR

및 제 테이블 DEBTOR.INFO 이렇게 구성 :

DEBTOR.INFO 제가 선택 목록을 DEBTOR.INFO 테이블의 레코드 ID로 구성됩니다. 어떻게하면됩니까

select * from DEBTOR WHERE 53 IN (name of select list)?

이것도 가능합니까?

필자는이 쿼리가 Retrieve보다 SQL처럼 보이 긴하지만 실현하기 위해 노력하고있는 것을 쉽게 이해할 수 있도록 작성했습니다.

현재, 나는

SELECT DEBTOR WITH 53 EQ [paste list of DEBTOR.INFO record IDs]

를 작성하여이 쿼리를 수행하지만, 분명히이 큰 목록에 대한 다루기이다.

답변

0

내가 할 수 없다고 생각합니다. 비록 당신이 사용하고 i-descriptor를 사용하더라도 그것은 한 방향으로 만 작동합니다. TRANS ("DEBTOR.INFO", 53,0, "X")는 DEBTOR 파일에서 작동하지만 다른 방식으로는 작동하지 않습니다. 따라서 DEBTOR.INFO의 TRANS ("DEBTOR", @ ID, 53, "X")는 아무 것도 반환하지 않습니다.

가능한 해결책은 article on U2's site을 참조하십시오.

이 작품 같은
+0

답장을 보내 주셔서 감사합니다. 아마도 두 번째 쿼리를 입력하여 실수로 올바른 대답을 바꿀 수 있음을 알게되었습니다. 또한 언급할만한 가치가있는 것은 사전에 i-descriptor를 추가하려면 프로그래머와 팀을 구성해야합니다. 53 DEBTOR.INFO 테이블에서 만든 내 선택 목록에있는 레코드 ID와 일치하는 DEBTOR 테이블의 "외래 키"(PACKET)입니다. – user3140622

+0

select with eval 접근 방식 만 표시하도록 내 대답을 수정했습니다. 프로그래머와의 팀 구성을 피하려는 경우 가장 쉬운 방법 일 수 있습니다. –

+0

나는 이것을 시도했다. 작은 따옴표와 큰 따옴표의 위치를 ​​반전시켜야했습니다. 그 후 쿼리는 아무것도 반환하지 않았습니다. 채무자 표의 9 자리 ID 색인에서 debtor.info 선택 목록의 8 자리 ID를 찾으려고 시도하지 않았던 것으로 보입니다. 나는 약간의 혼란이 있었을 경우에 대비하여 테이블 구조의 다이어그램을 추가했습니다. – user3140622

0

겠습니까 뭔가 (두 단계) :

SELECT DEBTOR.INFO 절약 PACKET 리스트 채무자 ....

이 채무자의 패킷 필드에 데이터의 선택 목록을 생성 .INFO 파일을 만들고 활성화합니다. (값이 중복되면 SAVING 후에 UNIQUE 키워드를 추가 할 수 있습니다).

다음 LIST 명령은 DEBTOR 파일의 @ID 필드에있는 값을 포함하는 활성 선택 목록을 사용합니다.

+1

아니면 내가 잘못 읽은 것입니다. 실제로 UniData 또는 UniVerse에서 SQL을 사용하여 원하는 것을 할 수 있습니다. UniData에서는 파일을 CONVERT.SQL로 변환해야합니다. 그런 다음 같은 SQL SELECT *에서 어디에서 패킷 (SELECT ID FROM DEBTOR_INFO where yourcriteria)); – jbmonco

+0

불행히도 내 선택 목록은 쿼리에서 생성되지 않으며 일부 임의의 패킷 ID의 .csv 파일을 업로드하고 변환하여 만들어집니다. 그래서 SELECT 문에서리스트의 이름을 사용하는 방법이 있는지 궁금합니다. – user3140622

+0

그 .csv 파일을 MYLIST000 이름으로 SAVEDLISTS 디렉토리에 저장 한 다음 GET.LIST MYLIST를 사용하여 다음 쿼리 문 앞에 활성화 할 수는 없습니다. (GET.LIST 명령에서 000을 사용하지 않습니다. – jbmonco

0

아직보고있는 사람이 있는지 모르지만 많은 프로그래밍이 필요하지 않은 간단한 옵션이 있습니다.

나는 프로그램, 서브 루틴 및 사전 항목을 사용하여 작업을 수행했습니다.

먼저 이름이 지정된 공통 변수를 DEBTOR 목록을 포함하도록 설정했습니다.정보 식별자 : 이제

SETLIST 
* 
* Use named common to hold list of keys 
COMMON /MYKEYS/ KEYLIST 
* 
* Note for this example I am reading the list from SAVEDLISTS 
OPEN "SAVEDLISTS" TO FILE ELSE STOP "CAN NOT OPEN SAVEDLISTS" 
READ KEYLIST FROM FILE, "MIKE000" ELSE STOP "NO MIKE000 ITEM" 

, 나는 그 목록

CHECKLIST 
SUBROUTINE CHECKLIST(RVAL, IVAL) 
COMMON /MYKEYS/ KEYLIST 
LOCATE IVAL IN KEYLIST <1> SETTING POS THEN 
    RVAL = 1 
END ELSE RVAL = 0 
RETURN 

마지막에 값을 확인하는 서브 루틴을 만들 수 있습니다, 나는 내가 찾고 있어요 분야와 서브 루틴을 호출하는 사전 항목을 사용 :

INLIST: 
I 
SUBR("CHECKLIST", FK) 

IN LIST 
10R 
S 

지금은 내 목록 문에 정확한 기준을 투입해야 할 일은 :

LIST DEBTOR WITH INLIST = 1 ACCOUNT STATUS FK 
0

이드는 매우 강력한 EVAL을 XLATE와 함께 사용합니다.

SELECT DEBTOR WITH EVAL \XLATE('DEBTOR.INFO',@RECORD<53>,'-1','X')\ NE "" 
관련 문제