выборка случайных строк из базы данных оракула с помощью CodeIgniter Active Record - PullRequest
2 голосов
/ 07 марта 2012

Я хочу сделать конкретный запрос к базе данных Oracle. Я использую CodeIgniter с драйвером oci db. Мой запрос выглядит примерно так:

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?

1 Ответ

0 голосов
/ 22 марта 2012

Метод order_by () библиотеки активных записей экранирует значение "dbms_random.VALUE".

Я взглянул на библиотеку и нашел следующие допустимые параметры: $ orderby, $ direction ='', $ escape = TRUE

Вы должны указать, чтобы метод не экранировал вашу строку, и вызов будет выглядеть так:

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

В противном случае вы всегда можете выполнить свой запрос, не используябиблиотека активных записей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...