内联接MYSQL查询不起作用

时间:2013-10-13 19:58:48

标签: php mysql sql outer-join

我有一个包含三个表的表结构:profiles,profile_subrubriek和rubrieken。我使用以下查询查询数据:

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行。这是不正确的。如果我取出Inner Join并且只在WHERE clausule中包含'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'

我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

联接表可能不包含引用值。请尝试使用LEFT JOIN代替INNER JOIN

答案 1 :(得分:1)

开始使用此查询进行疑难解答。

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

如果记录大于1,请添加此行并再次运行:

INNER JOIN rubrieken ON profile_subrubriek.subrubriek_id=rubrieken.ID  

逐个添加原始查询的位,直到记录为零。你添加的最后一件事就是原因。