php - mysql建表字段的设置问题
伊谢尔伦
伊谢尔伦 2017-04-10 16:51:59
[PHP讨论组]

我想建个技能表 表的字段为 id , skill
另一个是人的信息表 字段为 id,sid,info其中sid是链接两个表的字段sid=技能表中的id
现在问题是每个人不一定有一个技能 每个人的sid中可能有好几个数 我用什么办法可以读取每个人的技能信息

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(7)
大家讲道理

技能表k,人物表p
select ta.*,tb.skill from p as ta left join k as tb on ta.sid=tb.id;

巴扎黑

你还少张表啊

PHP中文网

多对多关系,建议建多张关系表,比如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、用户信息表

一个用户可以有多项技能,但某一项技能可以被多个用户所应有!所以技能表和用户信息表之间的关系是多对多。
既然是多对多关系,那么就需要一张中间表(用户技能表)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号