0
我有一個查詢,我正在把結果放入數組中。 查詢返回兩個表的所有數據:order
和orderdetails
:如何使用LEFT JOIN mysql查詢輕鬆地在PHP中分割結果?
SELECT orders.*, order_details.* FROM `webshop_orders`
LEFT JOIN `order_details`
ON `orders`.`order_id` = `order_details`.`f_order_id`
WHERE `orders`.`f_site_id` = $iSite_id AND `orders`.`order_id` = $iOrder_id;";
我試圖找出如何返回這個數據把它們按以下格式的數組:
$aOrders = array(
0=>array(Orders.parameter1=>value, orders.parameter2=>value, orders.parameter3=>value, 'orderdetails'=>array(
array(Orderdetails.parameter1=>value, orderdetails.parameter2=>value)));
我目前將每個結果作爲關聯數組返回並根據其名稱使用2個鍵數組手動分割每個變量,但這看起來非常「勞動密集」?
while($aResults = mysql_fetch_assoc($aResult)) {
$i++;
foreach($aResults as $sKey=>$mValue){
if(in_array($sKey, $aOrderKeys){
$aOrder[$i][$sKey] = $mValue;
} else {
$aOrder[$i]['orderdetails'][$sKey] = $mValue;
}
}
}
編輯:上面的函數並沒有考慮多個訂單細節,但函數的意思是作爲一個例子!
有沒有更簡單的方法,或者我可以使用更好的查詢呢?
如果你想要兩個數組,需要2次訪問數據庫。一次爲訂單,一次爲這些訂單的細節。通過留下加入你導致你正在嘗試修復的分裂問題。 – xQbert
嗯,我猜想性能明智讓PHP和MySQL處理一個查詢而不是2比2個查詢更好? – Abayob
就我個人而言,我發現我需要處理的數據集,沒有更多更容易。我不知道完整的用例,我不能說哪種方法更好。但考慮到你試圖填充2個數組,我會採取兩次旅行。但是,那麼爲什麼你需要兩個數組。如果一組數據包含您需要呈現的所有內容,那麼爲什麼要分成兩個數組?你可以使用控制中斷邏輯並迭代「訂單」,然後在「更改」時寫出新的標題,然後遍歷細節。 (基本上忽略「訂單」信息,直到它改變) – xQbert