2011-12-31 48 views
0

如何在codeigniter中的活動記錄中寫入以下查詢?Codeigniter子查詢加入

選擇tbl_list.id,tbl_list_items.name 從tbl_list 加入上tbl_list_items.id tbl_list_items =(從選擇tbl_list_items其中tbl_list_items.id = LIST_ID通過tbl_list.id ASC tbl_list_items.item_no LIMIT 1次序)

更新:

這就是我出來,但它沒有完成這項工作。

​​

欣賞任何幫助。謝謝。

+0

最後更改的語句來 選擇tbl_list.id,從tbl_list tbl_list_items.name加入上tbl_list_items.id tbl_list_items =(從選擇tbl_list_items其中tbl_list_items.id = listing_id通過tbl_list.id ITEM_NO ASC LIMIT 1次序); 積極的記錄似乎更滿意這一點。 – 2011-12-31 16:28:03

+0

您可以使用直接SQL語句使用Active Record。但是,您並沒有將聲明拆分爲可互換的組件。 – 2012-01-01 14:01:33

回答

1

Review the Active Record methods available to you in CodeIgniter.

Then review a CI library to extend it to handle subqueries available on CodeIgniter

There is a walk-through about how CI is doing this under-the-hood

Found a github codebase for implementing subqueries in CodeIgniter 1.7 and 2.x (see link)

編輯:

修改過的代碼下面是阿西斯噸。您還可以查看第4個鏈接的示例。

要複製你真是什麼嘗試做,代碼將類似於(這是未經測試......但希望開始你在正確的道路上):

$this->db->select('tbl_list.id, tbl_list.names'); 
$this->db->from('tbl_list'); 
$sub = $this->subquery->start_subquery('join', 'left', 'tli.id = tbl_list.id'); 
$sub->select('tbl_list_items.id')->from('tbl_list_items')->where('tbl_list_items.list_id=tbl_list.id '); 
$sub->db->order_by('ASC'); 
$sub->db->limit(1); 
$this->subquery->end_subquery('tli'); 

關鍵是這個聲明:$ this-> subquery-> end_subquery('tli'); 這裏發生了什麼,它會將子查詢的結果視爲AS tli,以便您可以在tli.id中引用它。

希望這有助於!

+0

我沒有得到第三行,tbl_list_items.id不等於tbl_list.id而是等於select。我閱讀了文檔,但沒有顯示從加入開始子查詢的方式。任何建議。 – 2011-12-31 15:45:06

+0

嘗試第三行:$ sub = $ this-> subquery-> start_subquery('join',tbl_list_items.id = list_ids');對於查詢的其餘部分,創建一個使用'... AS'list_ids'的SELECT語句。我會在今天晚些時候寫出來。 – 2012-01-01 14:13:09

+0

已更新,在CI中帶有用於AR的子查詢庫的鏈接,並帶有解釋的新代碼庫。 – 2012-01-04 03:05:53