mysql - 内表连接出现意外结果

标签 mysql sql join

我有3张 table

  • sponsor = id(PK)、图片、链接
  • sponsor_tier = id(PK)、姓名
  • sponsor_tier_rel = id(PK)、sponsor_id(FK 赞助商表 ID)、sponsor_tier_id(FK 赞助商表 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 次。

我在这里做错了什么?

最佳答案

您的查询缺少 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

关于mysql - 内表连接出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43852499/

相关文章:

mysql - 加入具有针对同一 ID 的多个记录的表

mysql - LEFT OUTER JOIN 出现问题

sql - LINQ 连接 - 性能

Mysql,双重连接两次使用同一张表,但间接

mysql - 从mysql获取最新记录

php - 循环直到变量达到 0

php - 这是执行此 PHP 类的正确方法吗?

php - 如何计算一个字段中的日期时间

c# - 在 sql 查询中使用 .net Datetime

sql - 尝试优化我的 SQL(内部联接和分组)时出现问题