2016-12-09 1 views
0

와일드 카드로 다음 테이블을 어떻게 조인합니까? SearchedPeople 테이블의 SearchedName을 포함하는 People 테이블에서 모든 별개의 행을 가져 오려고합니다.와일드 카드 (MS 액세스)가있는 SQL 조인 테이블

SearchedPeople :

SearchedName    
-------- 
Andrew 
John 
John Smith 

사람 :

ID PersonName  Attribute  Age 
---------------------------------------- 
1 John Smith   1   23 
2 John Smith Jr  3   25 
3 John Smith Jr II 4   73 
4 Kevin    2   21 
5 Andrew Smith  1   14 
6 Marco    5   90 

원하는 출력 : 내가 지금까지 어떤 나던 법과 가지고

PersonName  Attribute  Age 
---------------------------------------- 
John Smith   1   23 
John Smith Jr  3   25 
John Smith Jr II 4   73 
Andrew Smith  1   14 

코드입니다. 세 개의 빈 행을 반환합니다 (그 이유는 무엇입니까?). 당신은 표 A (SearchedPeople)에서 모든 열이 없기 때문에

SELECT b.PersonName, b.Attribute, b.Age 
FROM SearchedPeople a 
LEFT JOIN People b ON "%"&a.SearchedName&"%" like b.PersonName 

답변

4

그것은 세 개의 빈 행을 반환하고 LEFT JOIN은 일치를 생성하지 않았다.

귀하의 기준이 잘못된 순서이므로 에있는 PersonName 문자열을 검색 할 때 주위를 전환해야합니다. 또한 Access는 Parafait으로부터 아래의 코멘트를 보거나 MS-Access의 설정을 약간 변경하지 않는 한, asteriks * wilcard를 좋아하는 한 %을 좋아하지 않습니다.

난 그냥이 테스트 :

SELECT a.SearchedName 
     ,b.PersonName, b.Attribute, b.Age 
FROM 
     SearchedPeople a 
     LEFT JOIN People b 
     ON b.PersonName LIKE ("*" & a.SearchedName & "*") 

편집 :

모든이 삭제되었다 :

사용 허락의 경우 코멘트에 대답 @Parafait 붙여 넣기에서 코멘트에서

좋은 MS 액세스 특정 정보 퍼센트는 작동합니다. OP가 GUI .exe 프로그램이 아닌 OLEDB를 통해 MS Access에 연결되면 코딩 된 SQL의 LIKE 문에는 % 연산자가 필요합니다. OP는 데이터베이스 설정을 항상 ANSI-92 모드로 변경하여 항상 와일드 카드를 사용할 수 있습니다.

+1

'ALIKE'와 퍼센트를 사용하십시오. OP가 GUI .exe 프로그램이 아닌 OLEDB를 통해 MS Access에 연결되면 코딩 된 SQL에서 LIKE 문에 '%'연산자가 필요합니다. OP는 또한 데이터베이스 설정을 [ANSI-92 모드]로 변경할 수 있습니다 (https://support.office.com/en-us/article/Comparison-of-Microsoft-Access-SQL-and-ANSI-SQL-93edf744-9070- 4af8-bcf9-1953a87bd6e5)는 항상'% '와일드 카드를 사용합니다. – Parfait

+0

@Parfait 감사합니다. 와일드 카드의 ms 액세스 문서를보고 92 표준의'%'목록과 89의'*'목록을 보았습니다. 그러나 나는 왜 작업을 보았는지는 깊은 다이빙의 이유와 이유를 보러갔습니다. 어쨌든 정보 덕분에'%'을 인식하지 못했을 것입니다. 여러분이 그 정보에 만족 하셨기를 바랍니다. 답변에 직접 귀하의 의견을 붙여 넣기 만하면됩니다. 무엇이든 변경하고 싶다면 자유롭게 편집하십시오. – Matt