2013-11-25 111 views
1

我有3個表及其列。SQL如何在這種特定情況下選擇數據

'players': id 

'items': player_id,item_id,quantity 

'item_list': id,price 

我要選擇列表中的所有項目的運動員有:

("select * from items where player_id=$player_id") 

,同時顯示的項目數據形式「的MULTILINE_ACL_COMPONENT」表。輸出應該是這樣的

嗨,我有ID $player_id。這裏是我的項目

item_id1價格1多少:$數量1

item_id2 price2多少:$ quanity2

如何做到這一點?我不想每個查詢我的基地(while $row=mysqli_fetch_array($result))。那太重了。我想要做1或2個查詢(union?outer join?inner join?我不知道,我在問),並且他們顯示數據。任何人都知道如何做到這一點?

回答

0

您需要使用group by子句進行連接。

select i.item_id, il.price, i.quantity 
from items i, items_list il 
where i.player_id=$player_id 
and i.item_id = il.item_id 
group by i.item_id 
+0

我把項目,而不是我和item_list而不是il? – user3033026

+0

沒有。我很好。謝謝 – user3033026

+0

eeehh我如何顯示數據?請幫忙 – user3033026

0

如果我理解正確的話,我認爲你可以做到這一點與JOIN:

SELECT il.id AS ItemID ,il.price AS ItemPrice,i.quantity AS ItemQtY 
FROM items i 
INNER JOIN item_list il ON i.item_id = il.id 
WHERE player_id = $player_id 

這給你從item_list表從項目表中的數量以及價格信息。

+0

以及如何與 而($行= mysqli_fetch_array($結果)) 回波$行[ '表名']顯示它們; 我把'table_name'代替了嗎? – user3033026

+0

我不是很流利的PHP,但我認爲它應該是'echo $ row ['columnName']''。我編輯了我的答案,以提供更有意義的別名。使用ItemId,ItemPrice和ItemQty –

+0

@ user3033026。你能使它工作嗎?在這種情況下,我無法看到爲什麼你需要一個組的原因。任何你忘記提及的理由? –