2014-02-24 56 views
0

我有2個基本表 - 一個包含主ID標識記錄的主表以及一個包含可變數量值引用的相關表,如下所示。是否可以從MySQL表中返回一個數組?

表A:主(一個)

+----+-------------+ 
| ID | description | 
+----+-------------+ 
| 1 | Arnold  | 
+----+-------------+ 
| 3 | Baker  | 
+----+-------------+ 
| 7 | Charlie  | 
+----+-------------+ 

表B:相關(多)

+----+-------+ 
| ID | value | 
+----+-------+ 
| 1 | 1  | 
+----+-------+ 
| 1 | 2  | 
+----+-------+ 
| 3 | 3  | 
+----+-------+ 
| 3 | 2  | 
+----+-------+ 
| 3 | 1  | 
+----+-------+ 
| 7 | 2  | 
+----+-------+ 

與表B加入表A後,是否有可能以這樣的返回的列表B中的value列作爲數組返回的方式?

我期待返回類似的結果設置如下(根據上面的例子),其中第2列可以作爲數組值,而不是一個字符串值來處理:

{ 
[0] => 1 
[1] => array(1,2) 
} 
{ 
[0] => 3 
[1] => array(3,2,1) 
} 
{ 
[0] => 7 
[1] => array(2) 
} 

這裏是我的查詢語句以字符串值的形式獲得列:

SELECT tablea.*, tableb.value 
FROM tablea 
LEFT JOIN tableb ON tableb.ID = tablea.ID 
+1

從單純的MySQL,沒有。如果你使用的是編程語言(即PHP),那麼是的。 – Kermit

+1

你必須將數組「打包」成一個字符串(用於存儲),並在MySQL返回之後將其解壓縮。類似「2 2 1」(使用implode並在PHP中爆炸)。 –

+1

所以你的意思是我將需要返回表格b值作爲由逗號分隔的字符串(例如),然後使用PHP來做轉換?那正是我想要發生的事情,但我想問問是否有人通過mysql中的查詢語句正確完成了它。感謝澄清和回答@FreshPrinceOfSO –

回答

1

通常,通過在使用應用程序邏輯讀取結果集時構建多維數組來完成此操作。下面是一些僞代碼:

array = []; 
while (row = {some DB row retrieval method}) { 
    array[row['id']][] = row['value']; 
} 

如果PHP是你的語言:

$array = array(); 
while ($row = {some DB row retrieval method}) { 
    $array[$row['id']][] = $row['value']; 
} 
+0

謝謝MikeBrant。現在我只需要獲取正確的連接查詢來收集表B中的許多行,並將它們轉換爲我的結果集的單個列。 –

+0

@ H.Ferrence你應該分開你的問題並更新它。 – Kermit

+1

@ H.Ferrence這就是'SELECT a.id,b.value FROM a IN JOIN b b on a.id = b.id'。 –

相關問題