Codeigniter Active Record "JOIN" с двумя индексами - PullRequest
0 голосов
/ 25 января 2012

мои таблицы (структуры, поверхность) имеют две строки индекса: "planet_id" и "tile_id".Я хочу присоединиться к ним, но я получаю сообщение об ошибке SQL: "Столбец 'planet_id', где предложение неоднозначно".

$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 Ответ

2 голосов
/ 25 января 2012

Поскольку у вас есть 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 этого не знает и нуждается в конкретных инструкциях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...