2

クエリに含める前に、レコードがまだアクティブかどうかを確認する必要があるクエリがあります。今私の問題は、そのレコードのレコードステータスが別のデータベースにあり、異なるデータベースのテーブルを結合できないことを私たちは皆知っているということです.

私がやりたいことは、他のデータベースからビューを作成することであり、そのビューをクエリに結合するだけです。問題は、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

登録されているかどうかに関係なく、そこにあるすべての学生レコードが選択されます。そのテーブルが別のデータベースからのものである現在の学年の登録学生を含むテーブルがあります。在籍している学生の記録だけを数えたい。

4

1 に答える 1

2

異なるデータベースのテーブルを結合できないことは誰もが知っています

あなたのケースに該当するかどうかはわかりませんが、データベース全体のクエリに関するいくつかの投稿を次に示します。

一度に複数のデータベースにクエリを実行する
PHP Mysql はデータベース間で結合し
ます

とにかく、結合を使用する必要はありません。他のデータベースにクエリを実行して、それがアクティブかどうかを確認するだけです

$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');
于 2013-05-03T14:16:39.967 に答える