2017-05-08 32 views
0

我有3个表意外结果加入

  • 赞助= ID(PK),图像,链接
  • sponsor_tier = ID(PK),名称
  • sponsor_tier_rel = ID(PK), sponsor_id(FK发起人表ID),sponsor_tier_id(FK sponsor_tier表ID)

我做一个查询这样的:

$stmt2 = $db_connection->prepare("SELECT 
            sponsor.image, 
            sponsor.link 
           FROM 
            sponsor_tier_rel 
            INNER JOIN sponsor_tier 
             ON sponsor_tier_rel.sponsor_tier_id = 8 
            INNER JOIN sponsor 
             ON sponsor_tier_rel.sponsor_id = sponsor.id 
           "); 

我应该得到10个结果(因为在sponsor_tier_rel表中只有10个条目),但是我得到了80个结果,每个sponsor_tier_rel条目重复8次。

我在这里做错了什么?

+4

您的查询中有一个交叉连接。 sponsor_tier没有加入任何东西 – GurV

+0

@GurwinderSingh我搞砸了,并在这复杂。您的评论已被帮助 – user2287474

+0

'SELECT sponsor.image,sponsor.link FROM sponsor_tier_rel INNER JOIN sponsor ON sponsor_tier_rel.sponsor_id = sponsor.id WHERE sponsor_tier_rel.sponsor_tier_id = 8'就是所有需要的东西。如果您提交作为答案,我会接受@GurwinderSingh – user2287474

回答

1

您的查询缺少连接条件到sponsor_tier表。

SELECT 
    sponsor.image, 
    sponsor.link 
FROM 
    sponsor_tier_rel 
    INNER JOIN sponsor_tier ON sponsor_tier_rel.sponsor_tier_id = 
sponsor_tier.id 
    INNER JOIN sponsor ON sponsor_tier_rel.sponsor_id = sponsor.id 
WHERE 
    sponsor_tier_rel.sponsor_tier_id = 8