0

codeigniter で 4 つのテーブルを操作したい。試してみましたが、結果が得られませんでした。私のテーブルは次のようになります:

----university----     ----------department----------    -------language--------
| id |  name     |     | id |         name          |    | id |    name        |
------------------     ----------------------------     -----------------------
| 1  | Oxford    |     | 1  | Computer Engineering  |    | 1  |  English       |
| 2  | Harvard   |     | 2  | International Affairs |    | 2  |  German        |

これらのテーブルの行は単なる例です。私の 4 番目のテーブルには、他のテーブルに関するデータが含まれています。

  --------------------------result----------------------------
  | result_id | university_id | department_id | language_id  |
  ------------------------------------------------------------
  |    1      |    4          |       6       |      8       |
  |    2      |    4          |       7       |      4       |  

大学名、学科名、言語を同じ列に表示したいのですが、言語ID=2です。私はそのコードを試しましたが、結果はありませんでした:

$this->db->select('university.name,department.name,language.name' );
$this->db->from ( 'university' );
$this->db->from ( 'department' );
$this->db->from ( 'language' );
$this->db->join ( 'result', 'result.university_id = university.id', 'inner' );
$this->db->join ( 'result', 'result.department_id = department.id', 'inner' );
$this->db->join ( 'result', 'result.language_id   = language.id', 'inner'   );
$this->db->where( 'result.language_id', '2' );
$this->db->order_by( 'department.name', 'asc' );

$query = $this->db->get ();

return $query->result ();    
4

1 に答える 1

1

構造から作成/結合してみてください

$this->db->select('university.name,department.name,language.name' );
$this->db->from ( 'university' );
$this->db->join ( 'result', 'result.university_id = university.id', 'inner' );
$this->db->from ( 'department' );
$this->db->join ( 'result', 'result.department_id = department.id', 'inner' );
$this->db->from ( 'language' );
$this->db->join ( 'result', 'result.language_id   = language.id', 'inner'   );

$this->db->where( 'result.language_id', '2' );
$this->db->order_by( 'department.name', 'asc' );

$query = $this->db->get ();

return $query->result ();  

それが機能しない場合は、3つの異なるクエリを作成し、すべてをマージしてみてください。

于 2012-11-14T23:38:13.893 に答える