0

>* 1.これをアクティブレコードに書き込む必要があります*

これらの3つのテーブルを結合する必要がありますが、結合の条件は非常に選択的です

$this->db->select(name);
$this->db->from('table0');
$this->db->join('table1','(table1.id=0 AND table0.feild1 = table1.feild1) OR (table1.id=1 AND table0.feild2 = table1.feild2)') // <--- how to write this is my question

簡単な結合を行うこともできますが、主な問題は、上記の結合の条件を達成することです。また、これは非常に、非常に!のごく一部です。大きなクエリなので、次のようなネイティブSQLクエリに戻すことはできません。

$this->db->query('//entire sql query'); //cant do this, need to write ACTIVE RECORDS

アクティブなレコードを書き込むと、firebugは次のようなエラーをスローします。

SQL構文にエラーがあります。')の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。または

助言がありますか ?

4

1 に答える 1

0

正直、それが可能かどうかはわかりません。CIは真のアクティブレコードを使用しないため、各メソッドには非常に厳密なパラメーターがあり、必要なタスクを実行するためにだまされる可能性のあるパラメーターはありません。

私が試みるのは、クエリを少し書き直すことです。

$this->db->select(name);
$this->db->from('table0');
$this->db->join('table1','(table1.id=0 AND table0.feild1 = table1.feild1)', LEFT);
$this->db->join('table1','(table1.id=1 AND table0.feild2 = table1.feild2)', LEFT);
$this->db->where('(table1.id=0 AND table0.feild1 = table1.feild1)');
$this->db->or_where('(table1.id=1 AND table0.feild2 = table1.feild2)');

このクエリは正しい値を返すと思いますが、徹底的にテストすることをお勧めします。これが少なくともあなたを正しい方向に向けることを願っています。

于 2012-08-31T15:00:24.797 に答える