2012-12-14 2 views
0

으로 결합하십시오. 배열 결과를 가져 와서 다른 테이블 ID와 결합하여 ID 이름을 출력 할 수 있습니까? I가 "밥 필요할 때"2 : 1 내지 3 "을내부 배열 결과를 다른 테이블 ID, 이름

SELECT * 
FROM 
    meet 
    INNER JOIN location 
    ON meet.meetLoc = location.locID 
    LEFT JOIN team ON meet.meetTeams = team.teamID 
ORDER BY meetDate ASC 

이것은 PHP 하였지만, 이것은 단지 출력된다 Array ([0] => 3 [1] => 1 [2] => 2)

이 MySQL은이다

어레이의 출력 인 : 샐리 : 슈는 "

$teams = explode(", ", $row_rsCurMeet['meetTeams']); 
$tmp = array(); 
foreach ($teams as $team) 
$tmp[] = $team; 
echo implode('  :  ',$tmp); 

나는 또한이 시도했지만 그것은 반환"밥 : 밥 : 밥을 "

$team_id = $row_rsCurMeet['teamID'];  
$team_name = $row_rsCurMeet['teamName']; 
$team = $row_rsCurMeet['teamName']; 
$teams = explode(", ", $row_rsCurMeet['meetTeams']); 
foreach ($teams as $key => $value) { 
$key = $team_id; 
$value = $team_name; 
print_r ($value); 
} 

의견이 있으십니까? 내 머리가 벽을 치고 상처를 입는다. 감사!

SAMPLE DATA 

Table meet    Table team 
meetID meetTeams  teamID teamName 
1  3, 1, 2   1  Sally 
2  2, 3, 1   2  Sue 
3  1, 3, 2   3  Bob 

위치 정보를 무시하십시오.

+0

데이터의 예를 볼 수 있습니까? – ianbarker

+0

"Bob : Sally : Sue"는 어디에서 왔습니까? 테이블 정의와 샘플 데이터를 추가 할 수 있습니까? – Kickstart

+0

당신이하려는 일은 정말로 분명하지 않습니다. '배열의 결과 '가 무슨 뜻인지 모르겠다. 배열은 배열이며 결과는 없습니다. ID 이름을 출력하는 것이 무슨 뜻인지 잘 모르겠습니다. 당신은 그들이 함께 어울리는 방법에 관한 문맥으로 코드 스 니펫을 보여주고 있습니다. 아마도 당신이하려는 일에 대해보다 현실적인 설명을 해줄 수 있습니다. 테이블 스키마부터 시작하여 출력하려는 ​​내용을 알려주십시오. 내 생각에 당신이 원하는 것은 무엇이든 당신의 질문이 옳다는 것을 확인함으로써 쉽게 해결할 수 있습니다. –

답변

0

# 1 문제는 실제로 회의를 팀과 관련되게하려면 스키마를 변경해야한다는 것입니다. 1,2,3과 같은 meet.meetTeams에 값을 지정하면 팀 테이블에서 의미있는 조인을 수행 할 수 없게됩니다.

그래서, 내 제안은 당신이 당신은 다음과 같은 쿼리 것이

meetId teamID 
------ ------ 
    1   1 
    1   2 
    1   3 
    2   1 
    2   2 
    2   3 
etc. 

같은 구조를 가지고 그 (당신이 전화를 원하는 나) 새 테이블 meetTeams에 찬성 전부 meet.meetTeams 열을 제거한다는 것입니다 이 :

SELECT * 
FROM 
    meet 
    INNER JOIN location 
    ON meet.meetLoc = location.locID 
    INNER JOIN meetTeams 
    ON meet.meetID = meetTeams.meetID 
    INNER JOIN team 
    ON meetTeams.teamID = team.teamID 
ORDER BY meet.meetDate ASC 

당신이 정말로해야 할 일은 회의 및 팀 목록입니다. 아마도 쿼리에서 위치 테이블을 삭제할 수 있습니다. SELECT *을 수행하지 않고 반환 된 필드를 제한하고 필요한 필드 만 반환 할 수도 있습니다.

이제 결과 세트를 가져와 meetID을 첫 번째 차원으로 사용하여 다차원 배열로 읽을 필요가 있습니다. 이것은하기에 충분합니다. 다음과 같이 보일 수 있습니다.

$meet_array = array() 
while ($row = [YOUR PHP TO RETRIEVE ROW ARRAY FROM RESULT SET]) { 
    $meet_array[$row['meetID']] = $row; 
} 

foreach ($meet_array as $meet_id => $meet_data) { 
    echo 'Meet ID: ' . $meet_id . ' <br />'; 
    foreach ($meet_data as $data) { 
     echo 'Team ID: ' . $data['teamID'] . ', Team Name: ' . $data['teamName'] . ' : '; 
    } 
    echo '<br />'; 
} 
+0

감사합니다 마이크! 나는 그것을 시도 할 것이다. 다른 테이블을 만드는 것이 합리적입니다. 이제 새로운 meetTeams 테이블에 데이터를 저장하는 양식 페이지를 재고해야합니다. 귀하의 의견에 감사드립니다. –

+0

나는이 부분에 붙어있어 : [결과 PHP는 배열에서 결과를 찾으려면] 예를 들어 무엇입니까? 나는 몇 가지 시도했지만 빈 브라우저 페이지로 끝납니다. –

+0

데이터베이스와 상호 작용하는 데 사용하는 방법 (예 : mysqli,'PDO' 또는 커스텀)이 불명확하기 때문에이를 정의하지 않았습니다. 이것은 실제로 데이터베이스에서 결과 세트를 검색하는 방법과 전혀 다르지 않습니다. –