2017-05-28 12 views
0

同じクエリでサブテーブルから複数の値をフェッチしようとしているときに問題が発生しました。私はdealdetailsdealImagesテーブルを持っています。dealImagesは、deal-idからdealdetailsテーブルまでの複数の値を含むことができます。 、のような常に次に、選択クエリにGROUP_CONCATを追加codeigniterが同じクエリでサブテーブルから複数の値を取得する

 [deal_submittedby] => 0 
     [dealType] => 1 
     [totalavailabledeals] => 0 
     [numberofdealused] => 0 
     [showinhomescreen] => 1 
     [showinmenu] => 0 
     [isHomeScreenBigDeal] => 1 
     [imageId] => 22 
     [imageUrl] => http://localhost/codeIgniter/uploads/cover_image/storeimages/general/general_1493562480.momo.jpg 
     [thumbImage] => http://localhost/codeIgniter/uploads/cover_image/storeimages/thumb/thumb_1493562480.momo.jpg 
     [imageOrder] => 1 
     [addedOn] => 2017-04-30 14:28:43 
     [imageobjId] => 1493562480 
     [normalimageurl] => http://localhost/codeIgniter/uploads/cover_image/storeimages/normal/normal_1493562480.momo.jpg 
     [imgobjext] => momo.jpg 
     [imgobject] => 1493562480.momo.jpg 
     [imgisdefault] => 1 
+0

ダミーレコードでテーブルスキーマを表示してください。 – Nidhi

+0

クエリでユーザーをグループ化するため、dealImagesから単一の値を返すクエリ。 –

+0

@ NashirUddinただし、dealidテーブルに10個の画像がある場合は、dealimageテーブルに10個の値が返されます。間違っていない場合は – santanu

答えて

0

ようdealImagesから単一の値を返している

$dealDetailsArray  = array(); 
     $this->db->select('d.dealId,d.dealTitle,d.slug,d.dealDetails,d.extraDetails,d.aditionalDetails,d.status,d.dateAdded,d.categoryId,d.dealSubCategory,d.siteId,d.dealBrandId,d.isPinned,d.priceId,d.price,d.startDate,d.startTime,d.endDate,d.endTime,d.addedTime,d.dealUrl,d.adminAffiliatePrice,d.cashbackType,d.cashbackAmountType,d.cashbackAmount,d.shippingType,d.NumberOfClicked,d.priceType,d.discountPrice,d.discountPercentage,d.deal_location,d.howtousethisoffer,d.cancellationpolicy,d.deal_submittedby,d.dealType,d.totalavailabledeals,d.numberofdealused,d.showinhomescreen,d.showinmenu,d.isHomeScreenBigDeal,di.imageId,di.imageUrl,di.thumbImage,di.imageOrder,di.status,di.dealId,di.addedOn,di.imageobjId,di.normalimageurl,di.imgobjext,di.imgobject,di.imgisdefault'); 
     $this->db->from('dealdetails as d'); 
     $this->db->join('dealImages di', 'di.dealId = d.dealId','left'); 
     $this->db->where('d.endTime >= ',date('Y-m-d H:i:s')); 
     $this->db->group_by('d.dealId'); 
     $this->db->order_by("d.dealId", "desc"); 
     $query = $this->db->get(); 

     if($query->num_rows()>0) { 
      $dealDetailsArray = $query->result_array(); 
      $query->free_result(); 
     } 
     return $dealDetailsArray; 

をクエリを書くことは(、)コンマで値を返すように

コードを分離:

$dealDetailsArray  = array(); 
     $this->db->select('d.dealId,d.dealTitle,d.slug,d.dealDetails,d.extraDetails,d.aditionalDetails,d.status,d.dateAdded,d.categoryId,d.dealSubCategory,d.siteId,d.dealBrandId,d.isPinned,d.priceId,d.price,d.startDate,d.startTime,d.endDate,d.endTime,d.addedTime,d.dealUrl,d.adminAffiliatePrice,d.cashbackType,d.cashbackAmountType,d.cashbackAmount,d.shippingType,d.NumberOfClicked,d.priceType,d.discountPrice,d.discountPercentage,d.deal_location,d.howtousethisoffer,d.cancellationpolicy,d.deal_submittedby,d.dealType,d.totalavailabledeals,d.numberofdealused,d.showinhomescreen,d.showinmenu,d.isHomeScreenBigDeal,di.imageId,di.GROUP_CONCAT(di.imageUrl) AS imageUrl,di.thumbImage,di.imageOrder,di.status,di.dealId,di.addedOn,di.imageobjId,di.normalimageurl,di.imgobjext,di.imgobject,di.imgisdefault'); 
     $this->db->from('dealdetails as d'); 
     $this->db->join('dealImages di', 'di.dealId = d.dealId','left'); 
     $this->db->where('d.endTime >= ',date('Y-m-d H:i:s')); 
     $this->db->group_by('d.dealId'); 
     $this->db->order_by("d.dealId", "desc"); 
     $query = $this->db->get(); 

     if($query->num_rows()>0) { 
      $dealDetailsArray = $query->result_array(); 
      $query->free_result(); 
     } 
     return $dealDetailsArray; 
関連する問題