2016-01-22 37 views
0

結果可以說,我有一個名爲球員MySQL的joning與多個結果

profileid, player 

表和表稱爲銀行

id, profileid, player, item 

可以說,我有player

table player: [1, verro] 
後續進入

可以說我有5個銀行像這樣:

table bank: [1, 1, verro, "gold bar"] 
table bank: [2, 1, verro, "gold bar"] 
table bank: [4, 1, verro, "gold bar"] 
table bank: [5, 1, verro, "snake"] 

如何建立符合下列條件的查詢?:

選擇球員的名字verro再總結,他有多少金條?

的結果應該是:["verro", 3]

我試圖做到這一點:

select *, count(item) from player_deposit bank 
join player_attributes pa on bank.player = pa.player 
where LOWER(bank.player) = "verro" && bank.item = "Gold Bar" 

,但對我沒有工作,比較慢。

+0

你真的需要加入嗎?如果是的話,兩張桌上球員列的索引將有所幫助 –

+0

您的數據結構不正確。 「player」列具有相同的值,在兩個表格之間共享。 –

+0

在WHERE子句中使用'LOWER(bank.player)'可以防止使用索引(如果有的話)。也許你應該使用不區分大小寫的排序規則,然後你可以寫'WHERE bank.player =「verro」' – Barmar

回答

1

因爲您需要的所有信息都在銀行表中,所以您不需要加入。只需運行一個這樣的查詢:

SELECT player, COUNT(id) 
FROM bank 
WHERE player = 'verro' AND 
item = 'gold bar' 

而且你應該得到你所需要的。事實上,表格的設置方式,玩家表格與銀行表格中的信息是多餘的。