0

我有一个有 2 个表的数据库和一个搜索关键字,我如何加入这些表,在所有表中进行选择?

$this->db->select('*');
$this->db->from('tracks', 'genres');
$this->db->join('genres', 'genres.genreid = tracks.genre_id');

$this->db->or_where('tracks.title', $key);
$this->db->or_where('tracks.author', $key);
$this->db->or_where('genres.genreid', $key);
$this->db->order_by('tracks.rate', 'ASC');
$q = $this->db->get();
4

3 回答 3

0

你必须有一张表在 from 和其余的在 join

$this->db->from('tracks');

于 2013-04-24T22:52:51.037 回答
0
$this->db->select('*');
$this->db->from('tracks');
$this->db->join('genres', 'genres.genreid = tracks.genre_id');
$this->db->where('tracks.title', $key);
$this->db->or_where('tracks.author', $key);
$this->db->or_where('genres.genreid', $key);
$this->db->order_by('tracks.rate', 'ASC');
$q = $this->db->get();

这是使用它的正确方法。您在 FROM 子句中使用同一个表并 JOIN 这是问题。另一件事是您缺少 WHERE 子句并且仅使用或在哪里。

于 2013-04-25T06:47:26.283 回答
0

使用 join 语句来完成 where 子句的工作也是值得的。如果您执行 join 然后 where 它选择表之间的所有连接,然后应用 where,但是在连接中使用 AND,则数据库要做的工作就更少了。

于 2013-04-24T23:04:10.083 回答