2012-06-13 9 views
14

में खंड में MySQL का उपयोग करते हुए मेरे पास निम्न mysql क्वेरी है। क्या आप कृपया मुझे बता सकते हैं कि कोडिनेटर के तरीके में एक ही प्रश्न कैसे लिखना है?कोडिनेटर

SELECT * FROM myTable 
     WHERE trans_id IN (SELECT trans_id FROM myTable WHERE code='B') 
     AND code!='B' 
+0

आप CodeIgniter में सबक्वेरी का उपयोग के रूप में मैं पोस्ट –

+1

हां, मैंने सफलतापूर्वक कुछ मिनट पहले इसका इस्तेमाल करने में कामयाब रहे .. :) धन्यवाद :) –

+0

@raheelshan किया था। क्या आप इस पोस्ट की जांच करेंगे। http://stackoverflow.com/q/11045611/1209690 धन्यवाद :) –

उत्तर

25

से सभी कॉलम का चयन कर रहे हैं, तो आप इस उद्देश्य के लिए ऐसा करने के लिए कोडनिर्देशक के उप क्वेरी तरीके का उपयोग कर सकते हैं, आपको कोडनिर्देशक को हैक करना होगा। इस तरह
प्रणाली/डेटाबेस के लिए जाओ/DB_active_rec.php इन कार्यों

public function _compile_select($select_override = FALSE) 
public function _reset_select() 

उपलब्ध में अब सबक्वेरी लेखन से सार्वजनिक या संरक्षित कीवर्ड निकालें और अब यहाँ सक्रिय रिकॉर्ड के साथ आपकी क्वेरी है

$this->db->select('trans_id'); 
$this->db->from('myTable'); 
$this->db->where('code','B'); 
$subQuery = $this->db->_compile_select(); 

$this->db->_reset_select(); 
// And now your main query 
$this->db->select("*"); 
$this->db->where_in("$subQuery"); 
$this->db->where('code !=', 'B'); 
$this->db->get('myTable'); 

और यह काम किया जाता है। चीयर्स !!!
नोट: उप प्रश्नों का उपयोग करते समय आप

$this->db->get('myTable') 

जो क्वेरी चलाता है के बजाय

$this->db->from('myTable') 

उपयोग करना चाहिए।
घड़ी यह भी

How can I rewrite this SQL into CodeIgniter's Active Records?

नोट: Codeigntier 3 में इन कार्यों को पहले से ही सार्वजनिक ताकि आप उन्हें हैक करने की जरूरत नहीं है कर रहे हैं।

0

इस प्रयास करें:

return $this->db->query(" 
    SELECT * FROM myTable 
    WHERE trans_id IN (SELECT trans_id FROM myTable WHERE code='B') 
    AND code!='B' 
    ")->result_array(); 

सक्रिय रिकॉर्ड नहीं है लेकिन CodeIgniter के रास्ते http://codeigniter.com/user_guide/database/examples.html है एकाधिक परिणाम (सरणी संस्करण) खंड के साथ स्टैंडर्ड क्वेरी को देखने

7

इस एक का प्रयास करें:

$this->db->select("*"); 
$this->db->where_in("(SELECT trans_id FROM myTable WHERE code = 'B')"); 
$this->db->where('code !=', 'B'); 
$this->db->get('myTable'); 

नोट: $ this-> डीबी-> चुनें ("*"); वैकल्पिक है जब आप तालिका

15
$data = $this->db->get_where('columnname',array('code' => 'B')); 
$this->db->where_in('columnname',$data); 
$this->db->where('code !=','B'); 
$query = $this->db->get(); 
return $query->result_array(); 
+1

यह मेरी ज़रूरत पूरी तरह से उपयुक्त है, धन्यवाद! – Nebri