> 백엔드 개발 > PHP 튜토리얼 > mysql建表字段的设置问题

mysql建表字段的设置问题

WBOY
풀어 주다: 2016-06-06 20:17:22
원래의
1194명이 탐색했습니다.

我想建个技能表 表的字段为 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
那么

<code>select uid from relation where sid='xxx' 
</code>
로그인 후 복사

是拥有某个技能的人

<code>select sid from relation where uid='xxx'
</code>
로그인 후 복사

为某个人拥有的技能
当然要再读取适当联表信息

在加一张关系表就行了,用户表把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){

<code>$sid=mysql_fetch_assoc(mysql_query("select * from info where id=$id"))['sid'];</code>
로그인 후 복사

$arr=explode(';',$sid);
$sql="select skill from jineng where id in(";
foreach ($arr as $v)
{

<code>$sql.=$v.',';</code>
로그인 후 복사

}
$sql=substr($sql,0,strlen($sql)-1);
$query=mysql_query($sql);
// while循环便可输出所有的id为$id的用户的所有技能
}

1、技能表
2、用户信息表

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

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿