我需要帮助构建一个 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 1
tag_asc:
tag_id tag_name
1 "first"
2 "second"
3 "third"
我想从图像表中获取 image_id = 1
的图像数据,并从 tag_asc
中获取与 image_id=1
关联的所有标签名称> 表格。
我正在使用 CodeIgniter 事件记录,但我只需要连接表的想法。
感谢您的帮助。
最佳答案
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;
关于mySQL:从多个表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6745325/