我有一个包含三个表的表结构: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'
我做错了什么?
谢谢!
答案 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
逐个添加原始查询的位,直到记录为零。你添加的最后一件事就是原因。