mySQL:从多个表中选择数据

时间:2011-07-19 09:54:27

标签: mysql codeigniter activerecord

我需要帮助构建一个mysql查询以从多个表中进行选择。 我有三个与图像相关的数据库表:imagestagstag_asc。我想通过提供image_id来获取图像数据及其标记名称。

例如,以下是我的表结构:

图片:

image_id    image_name     path       date   
1            test.jpg      dir       1311054433

标签:

tag_id      image_id
1             1
2             1

tag_asc:

tag_id      tag_name
1            "first"
2            "second"
3            "third"

我想从图片表中获取image_id = 1图片的数据,并从image_id=1表格中获取与tag_asc相关联的所有标记名称。

我正在使用CodeIgniter Active记录,但我只是想加入表格。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

select *
from images i
left join tags t on t.image_id = i.image_id
left join tag_asc ta on ta.tag_id = t.tag_id
where i.image_id = 1;

使用LEFT JOIN表示即使其他表中没有连接行也会返回行(但是在缺失行的列中会得到null个值),这通常是合乎需要的。

如果您想要一行(未说明,但在评论中),请使用此行:

select i.image_id, group_concat(tag_name) as tag_names
from images i
left join tags t on t.image_id = i.image_id
left join tag_asc ta on ta.tag_id = t.tag_id
where i.image_id = 1
group by 1;