我一直在看这个错误一段时间,看不出我的codeigniter sql查询出错了什么,有人可以建议吗?
“字段列表”中的未知列'album_images.album_id'
$this->db->select('
albums.id as album_id,
albums.album_title,
album_images.album_id,
album_images.image_id,
AVG(views.id) as views_id,
views.views as views_total,
images.id,
images.alpha_id,
images.user,
images.image_title,
images.image_type,
images.file_ext,
images.image_width,
images.image_height,
images.file_size,
images.submitted,
images.status'
);
$this->db->from('images', 'albums', 'album_images', 'views');
$this->db->join('albums', 'albums.id = album_images.album_id');
$this->db->join('views', 'views.id = images.id', 'left');
$this->db->where('albums.id', $id);
$this->db->where('images.status', 1); //fiter out deleted ones
$this->db->group_by('images.id');
$query = $this->db->get();
return $query->result();
我已经多次检查了所有拼写,但仍然得到了相同的结果。我尝试从行重新排序this-> db->,将album_images移动到开头,将错误更改为images.id。如果那是相关的。
任何人都知道我在这里做错了什么?感谢
答案 0 :(得分:4)
SELECT ... FROM (`images`) JOIN `albums` ON `albums`.`id` = `album_images`.`album_id` ...
如果您在两个表(images
,albums
)之间进行连接,则需要制定这两个表之间的关系。在您的情况下,您在两个表之间进行连接,但关系是第三个表(album_images
),因此找不到该字段。
参见:
答案 1 :(得分:0)
试试这个你给出重复的列名 我纠正你检查它是否有效
$this->db->select('
albums.id as albums_id,
albums.album_title,
album_images.album_id,
album_images.image_id,
AVG(views.id) as views_id,
views.views as views_total,
images.id,
images.alpha_id,
images.user,
images.image_title,
images.image_type,
images.file_ext,
images.image_width,
images.image_height,
images.file_size,
images.submitted,
images.status'
);