0

我的数据库还没有填充,我仍在设计它的过程中。我正在做的是基于游戏制作数据库,并且我正在构建一个程序来爬取一些数据以填充数据库。所以,这就是数据库的布局方式。

Item Table
id, name, image

Stat Table
id, item_id, stat_name, stat_value

我将其中一个统计名称设置为Class,并将统计值设置为Warrior。我希望能够选择所有选择了战士属性的项目。由于我对 SQL 的了解有限,这似乎需要多个查询,但我知道我错了。

我不擅长连接,我认为这是我必须做的,但同样,SQL 不是很好。任何帮助将不胜感激。此外, thestat_name和 stat_value 都必须是查询。所以stat_name='Class' stat_value='Warrior'

4

3 回答 3

1
SELECT DISTINCT i.*
FROM Item i
  JOIN Stat s
    ON i.id = s.id
WHERE s.stat_name = 'Class' 
  AND s.stat_value = 'Warrior'

如果我已经解释了您的数据库想法,这应该可以工作。

我想说我认为您的数据库设计存在缺陷,您的 Stat 表会变得臃肿并且查询起来会很痛苦。您是否考虑过为每个班级设置一张桌子?

于 2013-10-31T16:11:38.533 回答
1
     select i.*
       from item_table i
 inner join stat_table s
         on i.id = s.item_id
      where s.stat_name = 'Class' 
        and s.stat_value = 'Warrior'

如果您不需要 id,只需替换i.*i.name, i.image

于 2013-10-31T16:12:57.233 回答
0

如果我跟随,不是100%,但我会试一试。所以你想从 Stat 表中加载行并加入 Item 表?

SELECT * FROM Stat
    LEFT JOIN Item 
        ON Item.id = Stat.item_id 
WHERE Stat.stat_name='Class'
AND Stat.stat_value='Warrior'
于 2013-10-31T16:11:19.263 回答