2013-10-18 42 views
0

我很新的數據庫,所以我的問題是:得到一個數組從結果行現場

比方說,我們有兩個表:用戶訂單

是它可能的(以及如何操作)在一個查詢中列出所有用戶的數據(第一個&姓氏,出生日期等)和關聯的訂單?所以結果應該是這樣的:

|------------------------------| 
| John Doe | Order 1 details | 
|   | Order 2 details | 
|   | Order 3 details | 
|------------------------------| 
| Janny Hoe | Order x details | 
|   | Order y details | 
|------------------------------| 

所以你明白了嗎? table1中的每一行都有一個包含table2中多行的字段?我聽說MySQL不返回多維數組,所以它如何返回類似這樣的內容?

任何幫助將不勝感激!

編輯:

表結構可能是這樣的:

TABLE users: 
id | name 

TABLE orders: 
id | user_id | date_ordered | other unrelevant data... 

我知道這是可行的與連接,但我是什麼蟲子什麼會回來嗎? 將導致有場訂單,這將是數組包含訂單行數據,如$結果[0] ['訂單'] [0] ['date_ordered']或類似的東西?

+0

請提供表結構 – Ing

+0

聽起來像你需要看看連接。請參閱:http://dev.mysql.com/doc/refman/5.0/en/join.html但是你的表格字段也將取決於它的效果。 – Crackertastic

回答

2

做一個LEFT JOIN(如果有可能,用戶沒有任何訂單),然後在陣列收集結果,基於用戶ID:

SELECT Users.id, Users.name, Order.detail 
FROM Users 
LEFT JOIN Order 
ON Users.id= Order.user; 

例:

$userOrders = array(); 

$sql = 'SELECT Users.id, Users.name, Order.detail 
     FROM Users 
     LEFT JOIN Order 
     ON Users.id= Order.user'; 

foreach ($pdo->query($sql) as $row) { 
    $userOrders[$row['user_id']][] = $row; 
} 
+0

如果有多個訂單,$ row中會有一個數組包含與用戶關聯的所有訂單的詳細信息? 感謝您的幫助 – scrnjakovic

+0

每行將是一個單獨的訂單。如果你嘗試了LEFT join和var_dump()行,你會明白我的意思。您將獲得正確的數據,只需將其分組到由用戶標識鍵入的多維數組中即可。 –

+0

我明白了。感謝vm Wayne;) – scrnjakovic