2013-10-31 189 views
0

我還沒有填充數據庫,我仍在設計它。我正在做的是基於遊戲製作數據庫,並且我正在構建一個程序來抓取一些數據以填充數據庫。所以,這裏是數據庫的佈局。根據另一個表中的值從另一個表中選擇值

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'

回答

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.name, i.image

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' 
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表將會變得臃腫,並且將是一個痛苦的查詢。你考慮過每個班級的桌子嗎?

+0

更換i.*我想,如果有把數據當值來區分的一種方式,但不幸的是,數據的來源是不非常好。也許一旦所有的數據被拉出來,我會製作另一個程序來改進它 – Shaun

相關問題