【发布时间】:2011-07-26 08:44:31
【问题描述】:
考虑以下两个表:
tag_names (tag_id, tag_name)
tag_links (tag_id, image_id)
一张图片可以有多个标签,我想选择特定图片ID的所有标签。 我正在尝试以下查询,但它似乎没有正确选择(只选择一行),它有什么问题?
SELECT tag_name
FROM tag_names
LEFT JOIN tag_links.tag_id = tag_names.tag_id
WHERE tag_links.image_id = $image_id
编辑:我正在使用 CodeIgniter 活动记录查询,但我以基本 SQL 格式编写,以便如果有人不熟悉 CodeIgniter 可以提供帮助。然而,这个查询在简单的 mysql 格式下工作得很好(不使用 CodeIgniter),但奇怪的是在 CodeIgniter 上不工作,即使语法没有任何问题,它只是选择一行。
这里是 CodeIgniter 语法:
$this->db->select('tag_name');
$this->db->from('tag_names');
$this->db->join('tag_links', 'tag_links.tag_id = tag_names.tag_id', 'left');
$this -> db -> where('tag_links.image_id', (int)$image_id);
$query = $this->db->get();
【问题讨论】:
-
我认为 tag_links 必须与 tag_names 连接,而不是 tag_names 与 tag_links。