根据另一个表中的值从一个表中选择值

时间:2013-10-31 16:06:58

标签: php android mysql sql json

我还没有填充数据库,我仍然在设计它。我正在做的是建立一个基于游戏的数据库,我正在构建一个程序来抓取一些数据来填充数据库。那么,这是数据库的布局方式。

Item Table
id, name, image

Stat Table
id, item_id, stat_name, stat_value

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

我对加入并不是很好,而且我认为这是我必须要做的事情,但同样,SQL也不是很好。任何帮助将不胜感激。此外,stat_name和stat_value都必须是查询。所以stat_name='Class' stat_value='Warrior'

3 个答案:

答案 0 :(得分: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表会变得臃肿,查询起来很麻烦。你考虑过每个班级的桌子吗?

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

即可

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