【问题标题】:Having trouble with simple inner join in mysqlmysql中的简单内部连接有问题
【发布时间】:2013-10-22 21:51:58
【问题描述】:

所以我基本上有一个看起来像这样的数据库:

card_types
id    description    price
1     Card1           1.00
2     Card2           2.00
3     Card3           3.00

card_occasions
id    occasion
1     birthday
2     graduation
3     thank you
4     other

type_occasions
ID    TypeID   OccasionID
1     1        1
2     1        2
3     1        4
4     2        3

我正在尝试使用 WHERE card_type.ID = 1 进行内部连接,从而得到类似的输出,但我不知道从哪里开始。

示例输出:

card_occasion.ID   card_occasions.Name
1                  birthday
2                  graduation
4                  other  

任何帮助将不胜感激。 谢谢。

【问题讨论】:

  • 您可以发布查询吗?
  • 这就是问题,我不知道该怎么做查询。
  • 你想加入所有 3 个表?
  • 我只想要上面列出的结果,使用 WHERE card_type.ID = 1。我很确定这需要以某种方式连接所有三个表。

标签: mysql


【解决方案1】:

由于 type_occasions 已经拥有 typeid,所以不需要加入类型表。

SELECT o.id, o.occassion
FROM card_occasions o
INNER JOIN type_occasions t ON t.occassionid = o.id
WHERE t.typeid = 1

【讨论】:

  • 我不明白为什么不是你的答案赢得了分数!
  • 很抱歉这个问题写得不好。我正在处理这个项目的最后期限,没有太多时间写出来/解释它。我还在学习这个 MySQL 加入的东西。
【解决方案2】:

您从需要值的表开始。在Join 之后您需要建立关系的表。

SELECT card_occasions.id, card_occasions.occasion
FROM card_occasion co
INNER JOIN type_occasions to ON (to.OccasionID = co.id)
                                               ^ the relation between two table
WHERE ct.ID = 1

【讨论】:

  • 为什么你认为你的答案除了我的之外还有重要的价值?
  • 很可能有几个人同时开始写答案,因此这是多个几乎相同答案的原因。在 SO 网站上一直发生。
  • 我的回答是时间问题,我觉得应该是你的回答才能赢分
  • 好的,抱歉我有点粗鲁。
  • 它们基本上都是相同的答案。但 Mulmoth 确实有一些额外的细节。所以我会给他积分。
【解决方案3】:
SELECT A.id,A.occasion FROM card_occasions A JOIN type_occasions B ON B.OccasionID= A.id AND B.TypeID=1

【讨论】:

  • @user1831430 这不是关于什么是“工作”,而是什么能最好地回答你的问题。您的问题是关于“使用 WHERE card_type.ID = 1”。
  • 我首先看到了这个答案。在我刷新之前我没有看到其他人。
【解决方案4】:

如果您真的想链接所有三个表,因为我们在这里看不到,您可以使用此方法。这开始从 type_occasion 表链接到适当的“基本数据”表。

Select
  typeo.OccasionID, co.occasion as Name
From type_occasion typeo
  JOIN card_type ct ON (typeo.TypeID=ct.id)
  JOIN card_occasion co ON (typeo.OccasionID=co.id)
Where
  typeo.TypeID=1
  -- ct.id=1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 2013-07-07
    相关资源
    最近更新 更多