2011-09-16 32 views
8

का उपयोग करके 3 टेबल में शामिल होने के लिए कैसे कोई मुझे बता सकता है कि php के साथ 3 तालिका में कैसे शामिल होना है? उदाहरणकोडइग्निटर

SELECT FROM table1, table2,table on INNERJOIN ------------------- 

देना मैं 3 टेबल है। (प्रश्न तालिका, जवाब मेज और श्रेणी तालिका) यहाँ उदाहरण मेरे वेबपेज के रूप में है।

Time remaining 30 minutes(I will get "30 minutes" form Category table) 
1. Question (from question table) 
2. answer (from answer table) 

मुझे नहीं पता कि 3 टेबल में कैसे शामिल होना है।

+1

आप यह कैसे कर रहे हैं को हल किया जा सकता है उम्मीद है की तरह कोडिंग modiv कर सकते हैं? ActiveRecord जैसे ढांचे के साथ एक SQL कथन में कोडित हार्ड कोड के साथ? या कुछ और? – Klee

+0

मैं कोडनिर्देशक का उपयोग कर रहा हूं। –

उत्तर

27

ऐसा होना चाहिए,

$this->db->select('*');  
$this->db->from('table1'); 
$this->db->join('table2', 'table1.id = table2.id'); 
$this->db->join('table3', 'table1.id = table3.id'); 
$query = $this->db->get(); 

प्रति CodeIgniters सक्रिय रिकॉर्ड ढांचे

3

मेरा मानना ​​है कि कोडइग्निटर सक्रिय रिकॉर्ड ढांचे का उपयोग करके आप एक दूसरे के बाद एक में दो बयानों का उपयोग करेंगे।
जैसे:

$this->db->select('*'); 
$this->db->from('table1'); 
$this->db->join('table1', 'table1.id = table2.id'); 
$this->db->join('table1', 'table1.id = table3.id'); 
$query = $this->db->get(); 

दें कि एक कोशिश और देखें कि यह कैसे जाता है।

+0

धन्यवाद, क्या आप मुझे बता सकते हैं कि कोडनिर्देशक नहीं है? एसक्यूएल कमांड के साथ तीन टेबल में कैसे शामिल हों? मेरे खराब अंग्रेजी उपयोग के लिए खेद है। कृपया मुझे धीरज रखो। –

1

शुद्ध एसक्यूएल स्टेटमेंट निष्पादित करने के लिए (मुझे फ्रेमवर्क के बारे में पता नहीं है- कोडिनेटर !!!) आप सब QUERY का उपयोग कर सकते हैं! सिंटेक्स के रूप में इस प्रकार है

चयन t1.id उदाहरण से T1 अंदरूनी शामिल हों (से आईडी का चयन करें (example2 t1t1 पर Example3 t2 में शामिल हो। id = t2id)) पर किया जाएगा t1.id = t2 t2 के रूप में .id;

आशा है कि आप मेरा प्वाइंट प्राप्त करें!

+0

तीर्थ बोडवाला धन्यवाद –

2

के रूप में मैं CodeIgniter में लगता है कि सबसे अच्छा ActiveRecord उपयोग करने के लिए, जैसा कि ऊपर लिखा था। एक और बात: आप एआर में विधि श्रृंखलन का उपयोग कर सकते हैं:

$this->db->select('*')->from('table1')->join('table2','table1.id=table2.id')->... 
2

मैं एक समारोह बनाई क्षेत्रों के लिए मूल्यों के साथ और शामिल होने के लिए एक सरणी प्राप्त करने के लिए।

public function GetDataWhereExtenseJoin($table,$fields,$data) { 
    //pega os campos passados para o select 
    foreach($fields as $coll => $value){ 
     $this->db->select($value); 
    } 
    //pega a tabela 
    $this->db->from($table); 
    //pega os campos do join 
    foreach($data as $coll => $value){ 
     $this->db->join($coll, $value); 
    } 
    //obtem os valores 
    $query = $this->db->get(); 
    //retorna o resultado 
    return $query->result(); 

} 

इस नियंत्रक में चला जाता है:

$data_field = array(
     'NameProduct' => 'product.IdProduct', 
     'IdProduct' => 'product.NameProduct', 
     'NameCategory' => 'category.NameCategory', 
     'IdCategory' => 'category.IdCategory' 
     ); 
    $data_join = array 
        ('product' => 'product_category.IdProduct = product.IdProduct', 
         'category' => 'product_category.IdCategory = category.IdCategory', 
         'product' => 'product_category.IdProduct = product.IdProduct' 
        ); 
    $product_category = $this->mmain->GetDataWhereExtenseJoin('product_category', $data_field, $data_join); 

परिणाम:

echo '<pre>'; 
    print_r($product_category); 
    die; 
0
function fetch_comments($ticket_id){ 
    $this->db->select('tbl_tickets_replies.comments, 
      tbl_users.username,tbl_roles.role_name'); 
    $this->db->where('tbl_tickets_replies.ticket_id',$ticket_id); 
    $this->db->join('tbl_users','tbl_users.id = tbl_tickets_replies.user_id'); 
    $this->db->join('tbl_roles','tbl_roles.role_id=tbl_tickets_replies.role_id'); 
    return $this->db->get('tbl_tickets_replies'); 
} 
0
$this->db->select('*');  
$this->db->from('table1'); 
$this->db->join('table2', 'table1.id = table2.id', 'inner'); 
$this->db->join('table3', 'table1.id = table3.id', 'inner'); 
$this->db->where("table1", $id); 
$query = $this->db->get(); 

कहाँ spe कर सकते हैं यह मॉडल में चला जाता है cify कौन सी आईडी को देखा जाना चाहिए या विशिष्ट तालिका में चयन करना चाहिए। आप यह भी चुन सकते हैं कि कौन से भाग में शामिल हों, बाएं, दाएं, बाहरी, आंतरिक, बाएं बाहरी, और शामिल विधि के तीसरे पैरामीटर पर दाएं बाहरी।

1

आप अपने इस

$this->db->select('a.nik,b.nama,a.inv,c.cekin,c.cekout,a.tunai,a.nontunai,a.id'); 
$this->db->select('DATEDIFF (c.cekout, c.cekin) as lama'); 
$this->db->select('(DATEDIFF (c.cekout, c.cekin)*c.total) as tagihan'); 
$this->db->from('bayar as a'); 
$this->db->join('pelanggan as b', 'a.nik = b.nik'); 
$this->db->join('pesankamar_h as c', 'a.inv = c.id'); 
$this->db->where('a.user_id',$id); 
$query = $this->db->get(); 
return $query->result(); 

मैं अपने एसक्यूएल