내가 뭔가 잘못하고 있는지, 아니면 이것이 MySQL에서 모든 것이 어떻게 처리되는지에 관한 단점이라면 궁금합니다. 여기 설치는 다음과 같습니다 (I 다른 곳이 정확한 항목을 찾을 수 없습니다) 나는 두 개의 테이블 위해 및 메뉴이왜 MySQL은 반환 된 JOIN 배열에 중복 정보를 반환합니까?
. 메뉴
이있는 'id
'는 'item
'세 가격 (아이템) ('prc1
' 'prc2
' 'prc3
') 각 열.
menu +----+----------+------+------+------+
|'id'| 'item' |'prc1'|'prc2'|'prc3'|
+----+----------+------+------+------+
| 1 | 'tshirt' | 3.00 | 4.50 | 4.00 |
| 2 | 'socks' | 1.00 | 2.50 | 2.00 |
+----+----------+------+------+------+
위해 또한 주문 메뉴에 대해 일치하는 항목 ID ('i_id
'), 내가 PHP에서 나중에 가격을 필터링에 사용하는 정수 ('prc_id
')를 가지고있다.
$result = mysql_query($query)
while($row = mysql_fetch_array($result))
{
print_r($row);
}
: I가 그때 확실히 모든 나왔하기 위해 처음에 결과를 다시 얻고, "SELECT order.prc_id, menu.item, menu.prc1, menu.prc2, menu.prc3
FROM order
LEFT JOIN menu
ON order.i_id = menu.id"
항목에 주문을 일치하도록 조인을 사용
order +------+--------+
|'i_id'|'prc_id'|
+--------+------+
| 1 | 1 | # i_id matches id - tshirt and informs to use prc1
| 2 | 3 | # i_id matchis id - socks and uses prc3
+--------+------+
, 내가 배열을 인쇄
이것은 내가 돌아 오는 배열입니다 (초기 테스트의 경우 분명히 더미 정보 임).
Array
(
[0] => 1 [prc_id] => 1 #the value (1) for 'prc_id' is given twice
[1] => tshirt [item] => tshirt #the value (tshirt) for 'item' is given twice
[2] => 3.00 [prc1] => 3.00 #the value (3.00) for 'prc1' is given twice
[3] => 4.50 [prc2] => 4.50 #etc
[4] => 4.00 [prc3] => 4.00
[0] => 3 [prc_id] => 3
[1] => socks [item] => socks
[2] => 1.00 [prc1] => 1.00
[3] => 2.50 [prc2] => 2.50
[4] => 2.00 [prc3] => 2.00
)
내 질문 (마침내, 맞습니까? xD) ... 중복 데이터가 어레이 응답으로 다시 전송되는 이유는 무엇입니까?
내가 잘못 했나요? 나는 무엇인가 내려다보고 있냐?
큰 문제는 아니지만 제 최종 결과에 영향을 미치지 않습니다. 최대한 정확하게하려고합니다.
감사합니다. 당신이 order
에서 item_id
및 menu
의 id
에 따라 합류처럼이에 따라 일을해야하는 동안 (내가 제대로 이해한다면) :
흠, 고마워. 'print_r()'이 문제일지도 모르겠다. 나는 실제로 커맨더 라인에서 그것을 실행하여 어떤 일이 정결 해 졌는지 확인했습니다. 해석이 너무 이상하다는 것이 이상합니다. 다시 한번 감사드립니다. :) – Squish