在MYSQL中一对多表关系这样显示,最优的做法是什么?
想表达的意思:用户有很多属性(Tag),比如唱歌、跳舞、玩游戏,表结构如下图:
创建表的mysql语句如下:
drop table if exists user;
create table user
(
user_id int not null auto_increment,
user_name varchar(20),
primary key (user_id)
);
drop table if exists tags;
create table tags
(
tag_id int not null auto_increment,
tag_name varchar(100),
primary key (tag_id)
);
drop table if exists user_tag;
create table user_tag
(
user_id int,
tag_id int
);
插入数据的SQL语句如下:
insert into user values(1,'小A');
insert into user values(2,'小B');
insert into user values(3,'小C');
insert into tags values(1,'唱歌');
insert into tags values(2,'跳舞');
insert into tags values(3,'宅');
insert into tags values(4,'看书');
insert into tags values(5,'旅游');
insert into user_tag values(1,1);
insert into user_tag values(1,2);
insert into user_tag values(2,1);
insert into user_tag values(3,1);
insert into user_tag values(3,4);
insert into user_tag values(3,5);
我想在页面表现如下:
首先是用户列表,但同时把用户的tag都带出来。
最终的表现形式和的首页列表很像,显示问题列表并顺便把问题的很多tag也显示出来。
目前我有两种办法:
先把用户select出来,然后在php中循环用户的结果集,再select出属性。
通过join连表,查出如下的记录,然后再显示的时候过滤。
请教有没有其他的方案?
谢谢。
相关阅读:
如何给轮播图自定义滚动条?
一个字符串里面小数点的数量大于1个的匹配正则怎么写?
binary operator '+' can t
我引入CSS3自定义字体没有效果?
javascript支持私有文件下载吗?
a标签跳转链接问题
app 旋转的问题
js实现并发的问题??
UDP的不可靠体现在哪里?
二路归并外排序算法的时间复杂度是什么?
优酷开放平台视频api在手机端怎么不显示?
macbook pro 8g 256ssd 光是coding,闲了上上网,看看电影,硬盘够用不?
html5元素与优酷和土豆视频播放有关联吗?
关于前端浏览器的内核问题!
GPUImage 处理后的图片与返回的图片不一致
j2ee的项目现在主流的开发技术,包括平台,框架,第三方IDE,前台框架,技术等
mipmap的兼容性问题
初学python,有没有有趣的小项目可以推荐的?
使用vue-router+webpack开发时,子组件的路由应该写在哪里?
为什么vps通过ssh一连接就ping不通?