2012-07-31 4 views
1
A table : id, name 
B table : id, a_id, name 

1A 영역 : NBMySQL의 - 1 : N 관계

은 내가

array( 
    0 => aID_1, 
    aName_1, 
    array (
     bName_1, 
     bName2 , .v.v.v 
    ), 
    ... 
    ... 
) 

이 난 단지에 함께 할 수 아래 같은 결과 B에서 A의 기록 및 관련 정보를 선택합니다 쿼리?

+0

당신은 기수 1가 : N, 그것은 필요한 두 테이블을 만드는 것입니다을? 수 없습니다 흡수? – jcho360

답변

1

뭔가 :

SELECT * FROM tableA as a LEFT JOIN tableB as b ON a.id = b.a_id; 
+0

그래서 내가 원하는 구조를 얻으려면 결과를 조작해야합니다. – Chameron

+0

@Chameron, 글쎄, 위의 것 같습니다. 이미 자세한 내용을 대답했습니다 :) –

+0

대단히 감사합니다! – Chameron

1
$qry = mysql_query ("SELECT a.id, a.name, b.name as b_name FROM A LEFT JOIN B on A.id = B.a_id"); 
$data = array(); 
while ($r = mysql_fetch_rows($qry)) 
{ 
    if (!array_key_exists($r["id"], $data) 
    { 
     $data[$r["id"]] = array (
      "id" => $r["id"], 
      "name" => $r["name"], 
      "b" => array() 
     ); 
    } 

    $data[$r["id"]]["b"][] = $r["b_name"]; 
} 

지금 당신은 foreach 문을 통해 반복 할 수있다이 같은

foreach ($data as $d) 
{ 
    print_r($d); 
} 
+0

우리는 mysql에서만 할 수 있습니까? – Chameron

+1

2 개의 테이블을 결합하기 때문에 하나의 SQL 문으로 모든 결과를 얻을 수 있습니다. PHP 배열에서 결과를 얻으려면 PHP가 필요합니다. – take

+0

대단히 감사합니다! – Chameron