在mysql中使用简单的内连接有问题

时间:2013-10-15 07:19:22

标签: mysql

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

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  

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您从表中所需的值开始。在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

答案 2 :(得分:1)

SELECT A.id,A.occasion FROM card_occasions A JOIN type_occasions B ON B.OccasionID= A.id AND B.TypeID=1

答案 3 :(得分:1)

如果你真的想要链接所有三个表,我们在这里看不到你可以使用这个方法。这将开始从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