Как СОЗДАТЬ «ПРОСМОТР (SQL)» в CodeIgniter и ВЫБРАТЬ из него данные?

У меня есть запрос, который должен проверить, активна ли запись, прежде чем включить ее в запрос. Теперь моя проблема в том, что статус записи этой записи находится в другой базе данных, и все МЫ знаем, что мы не можем объединять таблицы из разных баз данных.

Что я хочу сделать, так это создать представление из другой базы данных, и я просто присоединю это представление к моему запросу. Проблема в том, КАК я могу создать представление и выбрать данные из него в CodeIgniter?

Заранее спасибо.

Кстати, я не разрабатывал базу данных. -Компания определена-

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

SELECT count(IDNO), course, sum(student_balance)
FROM student_balances
WHERE school_term = '2013' AND student_balance > 0
GROUP BY course
ORDER BY course

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


person Þaw    schedule 03.05.2013    source источник
comment
Я немного запутался, нужно ли создавать представление в отдельной базе данных и переносить в другую?   -  person Crowlix    schedule 03.05.2013
comment
@Paw Cabelin - я обновил свой ответ, так как вы добавили детали запроса.   -  person stormdrain    schedule 04.05.2013


Ответы (1)


МЫ все знаем, что мы не можем соединять таблицы из разных баз данных.

Не уверен, применимо ли это в вашем случае, но вот несколько сообщений о запросах в БД:

Одновременный запрос к нескольким базам данных
PHP Mysql объединяет базы данных
https://stackoverflow.com/a/5698396/183254

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

$DB2 = $this->load->database('otherdb', TRUE);
$active = $DB2->query('SELECT is_active blah...');
if($active)
{
    //do other query
}

Обновлять

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

// load other db
$db2 = $this->load->db('otherdb',TRUE);

// get enrolled student id's from other db
$active_students = $db2->query('SELECT id FROM students WHERE enrolled = 1')->result();

// query this db for what you want
$this->db->select('count(IDNO), course, sum(student_balance)');
$this->db->where('school_term',2013);
$this->db->where('student_balance >',0);

// where_in will limit the query to the id's in $active_students
$this->db->where_in('id', $active_students);

// finally, execute the query on the student_balances table
$balances = $this->db->get('student_balances');
person stormdrain    schedule 03.05.2013