2012-03-07 103 views
2

我想通過Oracle數據庫進行特定查詢。我正在使用CodeIgniter和oci db驅動程序。我的查詢看起來是這樣的:使用CodeIgniter從Oracle數據庫中提取隨機行Active Record

SELECT * FROM (select inner_query.*, rownum rnum FROM (SELECT tutor_profiles.id AS "tutor_id", tutor_profiles.full_name AS "full_name", files.file_uri as "file_uri", files.id, count(distinct courses.id) AS "course_count" 
FROM tutor_profiles 
LEFT JOIN files ON files.id = tutor_profiles.avatar_id 
LEFT JOIN courses ON tutor_profiles.id = courses.tutor_id 
GROUP BY tutor_profiles.id, tutor_profiles.full_name, files.file_uri, files.id 
ORDER BY dbms_random.VALUE) inner_query WHERE rownum <= 4) 

我從數據庫中獲取隨機導師,並加入其他表中的結果。問題是我無法用Active Record生成這個查詢。 我得到DBMS_RANDOM.VALUE錯誤,但是當我在Oracle SQL編輯器中運行這個它工作正常。任何人都知道如何用AR生成這個查詢?

+2

'注:隨機排序沒有在Oracle或MSSQL drivers.'當前支持:http://codeigniter.com/user_guide/database/active_record.html CI的Active Record是不是解決所有的事情,但我希望它當然是。 – 2012-03-07 19:03:44

回答

0

它是活動記錄庫的方法ORDER_BY()被轉義值「DBMS_RANDOM.VALUE」。

我看了看圖書館,發現了以下有效的參數:$排序依據,$方向=「」,$逃逸= TRUE

你應該委託方法不是逃避你的字符串,呼叫會看像:

$this->db->order_by("dbms_random.VALUE", '', false); 

否則,你總是可以在不使用活動記錄庫執行查詢。

相關問題