mysql建表用中文字段_mysql建表字段的设置问题

本文讨论了在MySQL中处理多对多关系的建表问题,涉及技能表、用户信息表和关系表的设计。通过PHP实现查询用户技能的方法,包括使用中间表进行连接查询和通过字符串分割获取多技能用户。文章强调了在处理多对多关系时,建立中间关联表的重要性。
摘要由CSDN通过智能技术生成

我想建个技能表 表的字段为 id , skill

另一个是人的信息表 字段为 id,sid,info其中sid是链接两个表的字段sid=技能表中的id

现在问题是每个人不一定有一个技能 每个人的sid中可能有好几个数 我用什么办法可以读取每个人的技能信息

回复内容:

我想建个技能表 表的字段为 id , skill

另一个是人的信息表 字段为 id,sid,info其中sid是链接两个表的字段sid=技能表中的id

现在问题是每个人不一定有一个技能 每个人的sid中可能有好几个数 我用什么办法可以读取每个人的技能信息

技能表k,人物表p

select ta.*,tb.skill from p as ta left join k as tb on ta.sid=tb.id;

你还少张表啊

多对多关系,建议建多张关系表,比如relation

字段可以设置为sid,跟用户id,假设为uid

那么

select uid from relation where sid='xxx'

是拥有某个技能的人

select sid from relation where uid='xxx'

为某个人拥有的技能

当然要再读取适当联表信息

在加一张关系表就行了,用户表把sid去掉

这是一对多的问题

人表(t_user)

id , username

人 技能 关联表(user_skill)

id user_id skill_id

技能表(skill)

id,skill

SELECT

t_user.id,

t_user.username,

skill.id,

skill.skill

FROM

t_user

LEFT JOIN user_skill ON t_user.id = user_skill.user_id

LEFT JOIN skill ON skill.id = user_skill.skill_id

where t_user.id = '1' -- 差找用户id为1 的技能列表

用户信息表:info

用户技能表:jineng

思路:通过PHP先取出某用户的sid,然后通过字符串切割成数组的方式得到多技能用户的每个技能对应的sid,最后拼接sql语句。

要求:在info表中保存多个sid时需要用指定符号分开,例如:1;2;3;4

PHP:(这边以分号分割sid)

function user_skill($id){

$sid=mysql_fetch_assoc(mysql_query("select * from info where id=$id"))['sid'];

$arr=explode(';',$sid);

$sql="select skill from jineng where id in(";

foreach ($arr as $v)

{

$sql.=$v.',';

}

$sql=substr($sql,0,strlen($sql)-1);

$query=mysql_query($sql);

// while循环便可输出所有的id为$id的用户的所有技能

}

1、技能表

2、用户信息表

一个用户可以有多项技能,但某一项技能可以被多个用户所应有!所以技能表和用户信息表之间的关系是多对多。

既然是多对多关系,那么就需要一张中间表(用户技能表)

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值