【发布时间】:2016-03-31 11:04:41
【问题描述】:
嘿,我在使用我使用的查询从数据库中获取正确信息时遇到问题,我有以下数据库:
甲板
PK - ID - int
Deckname - varchar(255)
卡片
PK - ID - int
PK Cardname - varchar(255)
Cardvalue - int
Amount - int
现在当我使用以下查询时:
SELECT * FROM Card WHERE ID IN (SELECT ID FROM Card WHERE Cardname = 'pickachu');
其中 Card 表具有以下值:
1 pickachu 50 1
1 charmender 55 2
2 squirtle 65 2
我找回了这些行:
1 pickachu 50 1
1 charmender 55 2
ID = 1 因为pickachu 的ID 为1,我用它来获取ID 为1 的所有卡片。
现在,我还想要牌组名称(卡表中的 ID 1 与牌组中的 ID 1 相关)。
假设我们在 Deck 中有以下值:
1 myFirstDeck
2 mySecondDeck
我现在想得到这个作为回报:
1 pickachu 50 1 myFirstDeck
1 charmender 55 2 myFirstDeck
我一直在尝试使用以下查询来获取此信息:
SELECT Card.*, Deck.Deckname FROM Card INNER JOIN Deck ON (Card.ID = Deck.ID) WHERE Card.Cardname = 'pickachu';
但这只会将pickachu返回给我,而不是我想要的charmender。如何调整此查询以获得所需的结果?
【问题讨论】:
-
嗯,你的条款说你只想要那些 Cardname 是皮卡丘的人,所以你当然只得到那些。另外为什么两个表都有相互链接的 ID 列? ID 通常是唯一的,例如,如果它链接到甲板表,它应该是 deck_id。