2016-12-22 24 views
2

問題:我試圖在SQLite中創建一個查詢,該查詢將顯示table1中特定「id」的所有列(統計信息),並將其與來自表2的兩個單獨結果。在SQLite中合併兩個表時出現不需要的重複表結果

當使用JOIN或左連接,我結束了以下結果: (TABLE1數據)+(TABLE2 skill1)+(TABLE1數據)+(TABLE2 skill2)

表1被複制兩次因爲TABLE2中有兩項技能。如果有5個技能,我會得到TABLE1重複5次,如上所述。

我要的是: (TABLE1統計)+(TABLE2 SKILL1Bonus)+(TABLE2 SKILL2Bonus)

表1表示與鍵 'id' 字符的類別。每個角色將具有不同數量的技能特徵。每個技能特徵定義爲(table2.skillID)。一個角色可以擁有的技能特徵數量可以達到15個。我試圖將一個查詢從他們的技能特徵(table2.bonus)

中顯示角色(table1。*)的基本統計數據

-- Table 1 -- 
id = 8 
strength = 12 
agility = 11 

...詳細統計

-- Table 2 -- 
id = 8 
skillID = 3 
bonus = 20% chance to dodge 

id = 8 
skillID = 4 
bonus = 5% chance to crit 

我已經得到了最近和什麼讓我以上的結果:

SELECT * FROM table1 
LEFT JOIN table2 ON table1.id = table2.id 
WHERE table1.id = 8; 

任何對我應該去的方向的幫助將不勝感激。我不確定子查詢是否會更好。謝謝!

+0

如果table2中有兩個以上具有相同ID的行,該怎麼辦?在問題 – GurV

+0

中放入一些規則和期望的輸出*數據*,表2中的'id'按設計有重複。 'id'代表一類人物。它是table1中的主鍵和table2中的外鍵。 – dubba

+0

我正在尋找的是table1(id = 8)的所有內容以及表2中的兩項技能(其中id = 8) – dubba

回答

0
select 
    t1.id, 
    t1.strength, 
    t1.agility, 
    group_concat(t2.skill,',') bonuses 
from table1 t1 
left outer join 
table2 t2 
on t1.id = t2.id 
where t1.id = 8 
group by 
    t1.id, 
    t1.strength, 
    t1.agility; 
+0

@dubba爲您完成這項工作嗎? – GurV

+0

感謝您的快速反饋。這更接近我想要的。我會更新這個問題。可以有任何數量的技能(最多15個)。這裏最小,最大的方法將只適用於兩個(如你所說)。正在更新... – dubba

+0

您不想爲此創建15列(或更多)。更好地保持每個技能在單獨的行 – GurV

相關問題