2016-10-02 2 views
0

나는 내가 비주얼 C Microsoft Access 데이터베이스와 함께 작동 ++ 응용 프로그램의 일부로 사용이 SQL 쿼리를 다음 공공 토크 카테고리에서특정 SQL 쿼리의 결과에서 특정 데이터베이스 레코드가 제외되는 이유는 무엇입니까?

strQuery = _T("SELECT [Public Talk Titles].*, ") 
      _T("[Public Talk Categories].Description AS [Category Description] ") 
      _T("FROM [Public Talk Categories] ") 
      _T("INNER JOIN [Public Talk Titles] ") 
      _T("ON [Public Talk Categories].Category = [Public Talk Titles].Category ") 
      _T("ORDER BY [Public Talk Titles].[Talk Number]"); 

pTalkRecordset->Open(CRecordset::snapshot,(LPCTSTR)strQuery, CRecordset::readOnly); 

I 값은 다음과 같습니다

Bible/Dieu BD 
Derniers jours/Jugement de Dieu DJ 
Epreuves/Difficultés ED 
Evangélisation/Ministère EM 
Famille/Jeunes FJ 
Foi/Spiritualité FS 
Monde, pas partie du МР 
Non Spécifié NS 
Normes/Qualités chrétiennes NQ 
Religion/Culte RC 
Royame/Paradis RP 

결과 레코드 세트에 MP 범주가있는 모든 레코드가 제외되었습니다. 왜 이런거야?

답변

0

일치하는 레코드가 [Public Talk Titles]에 없기 때문일 수 있습니다.

모든 범주를 원할 경우 right join 대신 left join을 사용하십시오.

+0

공개 토론 제목 테이블에 레코드가 있습니다. –

+0

@AndrewTruckle하지만 카테고리에는 "MP"가 있습니까? 내부 조인은 조인 된 필드의 링크 된 값이 두 테이블 모두에있을 때만 레코드를 반환합니다. [more info] (http://stackoverflow.com/questions/38549/what-is-the-difference-between-inner-join-and-outer-join) – LukStorms

+0

적어도 눈에 보이는 것처럼 보입니다. 제가 (이상적이지 않은) 유니 코드 데이터베이스로 업그레이드하는 것이 었습니다. 다음으로 모든 MP 코드를 XX로 변경하고 카테고리 테이블에서도 XX로 이름을 변경했습니다. 위의 쿼리를 사용하여 모든 레코드가 표시됩니다. 적어도 지금은 작동합니다. 나는 MP의 코드를 가진 titles 테이블에 약 20 개의 레코드를 가지고 있기 때문에 왜 그렇게되지 않았을 지 모르겠습니다. 그러나 그것을 찾지 못했습니다. 적어도 지금은 작동합니다. –

관련 문제