2013-11-25 4 views
1

해당 열이있는 테이블이 3 개 있습니다.SQL이 특정 상황에서 데이터를 선택하는 방법

'players': id 

'items': player_id,item_id,quantity 

'item_list': id,price 

나는 목록에 플레이어가 가지고있는 모든 항목을 선택합니다 :

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

동안이 항목의 데이터 형식 'items_list가'테이블을 표시합니다. 출력은 다음과 같아야합니다.

안녕하세요, ID는 $player_id입니다. 여기 내 항목

item_id1 price1 얼마나 많은 수 있습니다 : $ quantity1

item_id2 price2 얼마나 많은 : 어떻게을 $ quanity2

에 할? 나는 모든 (while $row=mysqli_fetch_array($result))에 대한 내 기지를 쿼리하고 싶지 않아. 너무 무거워. 나는 하나 또는 두 개의 쿼리 (노조? 외부 조인? 내부 조인? 내가 알지도 못하는 걸 알고 싶다.) 나는 데이터를 표시한다. 아무도 이것을하는 방법을 알고 있습니까? 내가 제대로 이해하면

답변

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

i 대신 item을 넣고 il 대신 item_list를 넣으시겠습니까? – user3033026

+0

아니요. 나는 좋다. 감사합니다. – user3033026

+0

eeehh 어떻게 데이터를 표시하나요? 도와주세요 – user3033026

0

, 나는 당신이 가입으로 그렇게 할 수 있다고 생각 :

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']로 표시하는 방법; 내가 'table_name'대신에 무엇을 넣었습니까? – user3033026

+0

나는 PHP에 능숙하지는 않지만'echo $ row [ 'columnName']'이어야한다고 생각한다. 더 의미있는 별칭을 넣으려는 내 대답을 편집했습니다. ItemId, ItemPrice 및 ItemQty를 사용하십시오. –

+0

@ user3033026 당신이 그것을 작동하게 만들 수 있었습니까? 이 경우 그룹이 필요한 이유에 대한 이유를 알 수 없습니다. 언급하는 걸 잊은 이유는 무엇입니까? –

관련 문제