mysql建表欄位的設定問題

來源:互聯網
上載者:User
我想建個技能表 表的欄位為 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、使用者資訊表

一個使用者可以有多項技能,但某一項技能可以被多個使用者所應有!所以技能表和使用者資訊表之間的關係是多對多。
既然是多對多關係,那麼就需要一張中間表(使用者技能表)

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.