2016-03-30 20 views
0

Lütfen önce komut dosyasını kontrol edin.Değer Query'den nasıl edinilir

$arealeader = $this->db->query("select OutletCode from arealeader where NipLeader = '$Nip'")->result(); 
      $Mp=array(); 
      foreach($arealeader as $row) 
      { 
       $Mp[] = $this->db->query("select Nip from Employee where OutletCode = '".$row->OutletCode."'")->result(); 
       $MpCount[] = $this->db->query("select Nip from Employee where OutletCode = '".$row->OutletCode."'")->num_rows(); 

      } 

      echo array_sum($MpCount) // Result 18 
      foreach($Mp as $row) 
      { 
       echo $row->Nip."<br>"; 
      } 

nasıl Senaryo çalışmaları: $Arealeader i koşulu ile benim tablosundan her OutletCode seçin. Daha sonra OutletCode'u aldıktan sonra Nip öğesini OutletCode numaralı Çalışan ile Durum olarak seçmek istiyorum.

Sorun: echo $row->Nip."<br>";. Sadece beyaz ekrana sahibim.

var_dump($row);` 

    i get this 
`array(1) { 
     [0]=> 
     object(stdClass)#52 (1) { 
     ["Nip"]=> 
     string(9) "201603172" 
     } 
    } 
+0

$ satırında var_dump çağrılmaya çalıştınız mı? – patwoj98

+1

Bu sorgulara katılmalısınız, böylece sadece 1 sorgu. Bu size çok fazla performans kazandırabilir. – Ivar

+0

Satır için var_dump yerine, ilk foreach’dan sonra $ Mp’yi harcamayı deneyin. Var_dump ($ Mp) 'den – Ivar

cevap

0

ivar : You should join those queries so it is only 1 query. That can save you a lot of performance

Yukarıda benim senaryoyu değiştirmek ve bu dönüşür.

$data['master'] = $this->db->query("select a.*,b.fullname from SaldoCuti a 
        left join employee b on a.Nip = b.Nip 
        left join outlet c on b.OutletCode = c.OutletCode 
        left join arealeader d on c.OutletCode = d.OutletCode  
        where NipLeader = '$Nip'")->result(); 

Şimdi benim için iyi çalışıyor buldum. Eğer daha iyi bir yol varsa, lütfen bana söyleyin.