Sonuçları bir diziye eklemeyi tercih ettiğim bir sorgum var. order
ve orderdetails
:PHP'de sonuçları bir LEFT JOIN mysql sorgusuyla kolayca nasıl bölerim?
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;";
bu verileri döndürür bir aşağıdaki biçimde bir dizi koymak için nasıl bulundu çalışıyorum:
$aOrders = array(
0=>array(Orders.parameter1=>value, orders.parameter2=>value, orders.parameter3=>value, 'orderdetails'=>array(
array(Orderdetails.parameter1=>value, orderdetails.parameter2=>value)));
sorgu tüm iki tablo verisini geri
Şu anda her sonucu bir yardımcı dizi olarak döndürüyorum ve her değişkeni 2 tuş dizisini kullanarak ismine göre manuel olarak bölüyorum, ancak bu çok 'emek yoğun' görünüyor mu?
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;
}
}
}
DÜZENLEME: işlev yukarıdaki dikkate çoklu sipariş ayrıntıları almaz, ancak işlevi bir örnek olarak içindir!
Daha kolay bir yol var mı, yoksa bunun için daha iyi bir sorgu kullanabilir miyim? döngü dizinizi doldurmak için ise
İki diziyi isterseniz, veritabanına 2 kez gidin. Emirler için bir kez, bu emirlerin ayrıntıları için bir kez. Düzeltmeye çalıştığınız bölünmüş soruna neden olarak ayrılmadan önce. – xQbert
Eh, performans ve bilge PHP ve MySQL'in 2 yerine bir sorgu ele almasının 2 sorgudan daha iyi olduğunu tahmin ettim. – Abayob
Şahsen, birlikte çalışmam gereken veri setini buluyorum, artık daha kolay değil. Tam kullanım durumunu bilmeden burada hangi yaklaşımın daha iyi olduğunu söyleyemem. Ama 2 diziyi doldurmaya çalıştığın için iki yolculuk yapacağım. Ama o zaman neden iki diziye ihtiyacınız var? Eğer bir veri kümesi, işlemek için ihtiyacınız olan her şeyi içeriyorsa, neden iki diziye bölünür? Kontrol molası mantığını kullanabilir ve "emirleri" olsa da yineleyebilir ve sonra "değiştirir" ve yeni bir başlık yazdığında detayları tekrarlayın. (temelde "sipariş" bilgisini değişene kadar görmezden gelir) – xQbert