2013-10-13 2 views
0

프로필, profile_subrubriek 및 rubrieken의 세 테이블이있는 테이블 구조가 있습니다. 다음 쿼리로 데이터를 쿼리합니다.내부 조인 MYSQL 쿼리가 작동하지 않음

SELECT profiles.hoofdrubriek, profiles.plaats 
, profiles.bedrijfsnaam, profiles.gemeente, profiles.bedrijfsslogan 
, profiles.straatnaam, profiles.huisnummer, profiles.postcode 
, profiles.telefoonnummer, profiles.fax, profiles.email 
, profiles.website, profiles.bedrijfslogo 

FROM profiles INNER JOIN profile_subrubriek ON profiles.ID=profile_subrubriek.profile_id 
INNER JOIN rubrieken ON profile_subrubriek.subrubriek_id=rubrieken.ID 

where (
rubrieken.rubriek = 'Aannemersbedrijven' 
OR 
profiles.hoofdrubriek = 'Aannemersbedrijven') 
AND profiles.gemeente = 'Dongen' 

결과가 0입니다. 그건 맞지 않아. 내부 조인을 꺼내고 WHERE 절에 'hoofdrubriek'열을 넣으면 결과적으로 약 25 줄을 얻습니다. 맞습니다. 따라서이 쿼리 (위의 수정 된 버전)는 실제로 작동합니다.

SELECT profiles.hoofdrubriek, profiles.plaats, profiles.bedrijfsnaam 
, profiles.gemeente, profiles.bedrijfsslogan, profiles.straatnaam 
, profiles.huisnummer, profiles.postcode, profiles.telefoonnummer 
, profiles.fax, profiles.email, profiles.website, profiles.bedrijfslogo 

FROM profiles where (profiles.hoofdrubriek = 'Aannemersbedrijven') 
AND profiles.gemeente = 'Dongen' 

무엇이 잘못 되었나요?

감사합니다.

+0

여러 줄로 귀하의 쿼리/코드를 깰 - 그들은 읽기 어렵습니다 –

+1

나는 당신이 당신의 데이터를 확인하는 것이 좋습니다. –

+0

데이터가 다른 두 테이블의 profiles.hoofdrubriek = 'Aannemersbedrijven'과 일치 할 레코드가 없음을 제안합니다. 아마도 왼쪽의 조인을 사용하여 되돌아 오는 것을 확인하십시오. – Kickstart

답변

1

아마도 조인 된 테이블에 참조 된 값이 들어 있지 않은 것 같습니다. INNER JOIN 대신 LEFT JOIN을 시도하십시오.

+0

나는 대답이 아닌 주석으로 달았습니다. –

+0

이것은 트릭을 만들었지 만 정확히 왜 그런지 모르겠다. – user2704687

+0

차이점은 INNER JOIN이 다른 테이블에도 관련된 레코드가있을 때만 결과를 줄 것이라는 점이다. –

1

이 쿼리로 문제를 해결하십시오. 기록이 0이 될 때까지, 원래 쿼리의

INNER JOIN rubrieken ON profile_subrubriek.subrubriek_id=rubrieken.ID 

보관할 추가 비트 하나 하나 : 기록이 1보다 큰 경우

select count(*) records 
FROM profiles INNER JOIN profile_subrubriek ON profiles.ID=profile_subrubriek.profile_id 

이 줄을 추가하고 다시 실행하십시오. 마지막으로 추가 한 것은 이유 일 것입니다.