0

我有一个包含三个表的表结构: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'

我究竟做错了什么?

谢谢!

4

2 回答 2

1

可能连接的表不包含引用值。尝试LEFT JOIN代替INNER JOIN.

于 2013-10-13T20:04:15.103 回答
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  

继续添加原始查询的位,直到记录为零。您添加的最后一件事将是原因。

于 2013-10-13T20:08:54.030 回答