2012-07-31 91 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中與導致記錄和相關信息查詢?

+0

你有基數1:N,是否有必要建立2個表?不能你吸收它? – jcho360 2012-07-31 12:45:20

回答

1

是這樣的:

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

所以我需要操縱結果得到我想要的結構 – Chameron 2012-07-31 12:50:54

+0

@Chameron,那麼,在這種情況下,似乎上面已經得到了更多的回答:) – 2012-07-31 12:52:46

+0

非常感謝你! – Chameron 2012-07-31 13:14:20

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 2012-07-31 12:50:16

+1

由於您加入了2個表,因此您可以獲得包含一條SQL語句的所有結果。爲了在PHP數組中獲得正確的結果,您需要使用PHP。 – take 2012-07-31 12:51:26

+0

非常感謝你! – Chameron 2012-07-31 13:14:34