2012-04-23 139 views
1

我從來沒有使用子查詢,並且在UPDATE內安排SELECT時遇到問題。UPDATE查詢中的SELECT子查詢

我在這裏使用,並願與活動記錄類堅持一致性,如果沒有其他的原因,但我可以用原始的SQL工作。

這裏是我使用AR類的最後一次嘗試:

$this->db->select('locations.id, locations.name'); 
$this->db->join('locations','location_relationships.id = locations.id'); 
$sub = $this->db->_compile_select(); 

$this->db->_reset_select(); 

$this->db->where('id', $location_id); 
$this->db->where('group_id', $team_id); 
$query = $this->db->update('location_relationships', $data); 

基本上,我更新這個location_relationships表中的值,當出現這種情況要在同一個表和另外一個選擇一些相關的細胞(locations)。因此SELECT子查詢中還有一個JOIN

任何幫助,將不勝感激!

+0

這可以幫助你http://codeigniter.com/wiki/Subqueries – allen213 2012-04-23 15:59:59

+0

@ allen213接近,但它並沒有下'UPDATE'查詢具體覆蓋。我一直在閱讀,它可能實際上是MySQL的限制...沒有'更新'下的'SELECT's。 Odd .. – Gavin 2012-04-23 16:02:46

+0

在原始sql中編寫查詢,並確保它在您的sql客戶端中運行,然後再嘗試將它寫入活動記錄中。 – Catfish 2012-04-23 20:41:38

回答

0

先放UPDATE,然後再做SELECT

然後你就可以擺脫如下:$sub = $this->db->_compile_select(); $this->db->_reset_select();