我需要帮助构建一个mysql查询来从多个表中进行选择。我有三个与图像相关的数据库表:images、tags、tag_asc。我希望通过提供image_id来获取图像数据及其标记名。
例如,以下是我的表结构:
图像:
image_id image_name path date
1 test.jpg dir 1311054433标签:
tag_id image_id
1 1
2 1tag_asc:
tag_id tag_name
1 "first"
2 "second"
3 "third"我想从图像表中用image_id = 1获取图像的数据,从tag_asc表中获取与image_id=1关联的所有标记名。
我正在使用CodeIgniter活动记录,但我只需要加入这些表。
谢谢你的帮助。
发布于 2011-07-19 10:13:14
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;https://stackoverflow.com/questions/6745325
复制相似问题