Codeigniter Active Record“JOIN”带有两个索引

时间:2012-01-24 20:53:14

标签: php sql codeigniter activerecord

我的表格(结构,表面)有两个索引行,“planet_id”和“tile_id”。我想加入他们,但是我得到了一个SQL-Error:“where'collection_id'在where子句中是不明确的。”

$this->db   ->select('*')
    ->from('structures')
    ->join('surface', 'structures.planet_id=surface.planet_id AND structures.tile_id=surface.tile_id')
    ->where('planet_id', $p->planet_id);

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

导致:

Error Number: 1052

Column 'planet_id' in where clause is ambiguous

SELECT * FROM (`structures`) JOIN `surface` ON `structures`.`planet_id`=`surface`.`planet_id` AND structures.tile_id=surface.tile_id WHERE `planet_id` = '13247'

1 个答案:

答案 0 :(得分:2)

由于您在两个表格中有planet_id,因此您需要选择要应用where的内容。

所以,试试这个:

$this->db->select('*')
    ->from('structures')
    ->join('surface', 'structures.planet_id=surface.planet_id AND structures.tile_id=surface.tile_id')
    ->where('structures.planet_id', $p->planet_id);

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

这可能看起来很愚蠢,因为您的加入要求planet_id两个都相同,但where不知道,并且需要特定说明。