通過一個表的新聞版塊數(shù)字(就是ID)關聯(lián)另一個表的新聞版塊ID,把版塊名找出來,然后就可以顯示所有編輯員的信息,包括信息,名字、密碼,和所管理的新聞版塊ID,版塊名
網站建設哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網頁設計、網站建設、微信開發(fā)、小程序開發(fā)、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了臺前免費建站歡迎大家使用!
多個數(shù)字可以用循環(huán),在一個字段循環(huán)替換,如果新聞版塊分類少的話可以考慮直接用update,省事點。
下面是一個例子
--創(chuàng)建表結構
IF(OBJECT_ID('TA')
IS
NOT
NULL)
DROP
TABLE
TA
CREATE
TABLE
TA(id
INT,[value]
VARCHAR(100),
class
VARCHAR(10))
INSERT
INTO
TA(id,[value],class)
SELECT
1,'3,2,4,5','no'
UNION
ALL
SELECT
2,'5,1,1+2','yes'
--查詢結果
SELECT
T.id
,SUBSTRING(T.[value],R.number,CHARINDEX(',',T.[value]+',',R.number)-R.number)
AS
value
,T.class
,ROW_NUMBER()
OVER
(PARTITION
BY
T.id
ORDER
BY
T.id)
AS
code
FROM
TA
AS
T
JOIN
(
SELECT
TOP
10
number
FROM
[master].dbo.spt_values
WHERE
[type]='P'
ORDER
BY
number)AS
R
ON
(CHARINDEX(',',','+T.[value],R.number)=R.number)
--運行結果
id
value
class
code
-----------
----------------------------
----------
--------------------
1
3
no
1
1
2
no
2
1
4
no
3
1
5
no
4
2
5
yes
1
2
1
yes
2
2
1+2
yes
3
t_s
t_d
t_e
再創(chuàng)建一張關系表: t_s_d_e里面只有三個字段,t_s 的id、t_d 的id、t_e 的id
每增加一中關系都在表里添加一條記錄,就可以滿足條件了。
一張表中的主鍵只能有一個,外鍵可以有多個,如果一張表中多個列都需要被別的表的外鍵參考,需要使用候選碼(非空并且唯一),具體到你的這個問題的需求可以考慮用如下方法解決:
把a表中的bookid和authorid都設置為非空并且唯一,即
create table a(bookid int not null unique, authorid int not null unique);
然后在book表和author表中就可以分別設置外鍵來參照a表中兩個不同的字段了。
打開我的navicat,然后找到我的teacher表,選中它,然后點擊菜單欄上的‘design table'
2. 在彈出的對話框中找到“Foreign Keys”,然后單機。
3. 然后會出現(xiàn)一個設置外鍵的界面,一共有七列。簡單介紹一下這幾列的意思?!畁ame’:可以不填,你一會保存成功系統(tǒng)會自動生成。FieldName’:就是你要把哪個鍵設置為外鍵。這里選擇‘dept’,‘Reference DadaBase’:外鍵關聯(lián)的數(shù)據(jù)庫?!甊eference Table‘ :關聯(lián)的表 這里是dept表‘Forgin filed Names’:關聯(lián)的的字段,這里是code‘ondelete’:就是刪除的時候選擇的動作。這里我的選擇是setNull,意思就是當關聯(lián)的表刪除以后,teacher》dept字段會設置為null.
4. 設置完成后點擊‘save’保存退出,也可以點擊‘add Foreign Key’再添加一個外鍵。
打開我的navicat,然后找到我的teacher表,選中它,然后點擊菜單欄上的‘design table’。如下圖:
2. 在彈出的對話框中找到“Foreign Keys”,然后單機。如下圖:
3. 然后會出現(xiàn)一個設置外鍵的界面,一共有七列。簡單介紹一下這幾列的意思?!畁ame’:可以不填,你一會保存成功系統(tǒng)會自動生成。FieldName’:就是你要把哪個鍵設置為外鍵。這里選擇‘dept’,‘Reference DadaBase’:外鍵關聯(lián)的數(shù)據(jù)庫。‘Reference Table‘ :關聯(lián)的表 這里是dept表‘Forgin filed Names’:關聯(lián)的的字段,這里是code‘ondelete’:就是刪除的時候選擇的動作。這里我的選擇是setNull,意思就是當關聯(lián)的表刪除以后,teacher》dept字段會設置為null。如圖
4. 設置完成后點擊‘save’保存退出,也可以點擊‘add Foreign Key’再添加一個外鍵。k如圖:
多對多關系至少需要3個表,我們把一個表叫做主表,一個叫做關系表,另外一個叫做字典表或者副表(字典表是紀錄比較少,而且基本穩(wěn)定的,例如:版塊名稱;副表是內容比較多,內容變化的,例如)。
按照數(shù)據(jù)庫的增刪查改操作,多對多關系的查找都可以用inner join或者
select * from 主表 where id in (select 主表id from 關系表)
1,角色任命型
特點:關系表兩外鍵組合無重復紀錄,關系表一般不需要時間字段和主鍵,有一個表是字典類型的表。
界面特點:顯示主表,用checkbox或多選select設置多選關系。
例如:任命版主(用戶表-關系表-版塊名稱表),角色權限控制等,用戶是5個版塊版主,只要關系表5行紀錄就可以確立,關系表的兩個外鍵具有聯(lián)合主鍵性質。
增加關系:如果沒有組合紀錄,insert之。
刪除關系:如果有組合紀錄,刪除之。
2,集合分組型
特點:同角色任命型類似,關系表兩外鍵組合無重復紀錄,關系表一般不需要時間字段和主鍵。區(qū)別是主副表都不是字典表,可能都很大不固定。
界面特點:顯示主表,用搜索代替簡單的checkbox或多選select,或者一條一條的添加。
例如:歌曲專集(專集表-關系表-歌曲表)。手機分組(分組表-關系表-手機表)。用戶圈子(圈子表-關系表-用戶表)。文章標簽(文章表-關系表-標簽表)
增加關系:同版主任命型。
刪除關系:同版主任命型。
3,明細帳型
特點:關系表可以有重復紀錄,關系表一般有時間字段,有主鍵,可能還有文字型的字段用來說明每次發(fā)生關系的原因(消費)。
界面特點:顯示關系表,用radio或下拉設置單選關系。
例如:現(xiàn)金消費明細帳或訂單(用戶表-訂單表-消費原因表),用戶可能多次在同一事情上重復消費。積分變化紀錄也屬于這類。
增加關系:不管有沒有組合紀錄,insert之,紀錄時間。
刪除關系:根據(jù)關系表PK刪除。
4,評論回復型
特點:同明細帳型關系表一般有時間字段,有主鍵,區(qū)別是重點在文字型的字段用來說明每次發(fā)生關系的內容(評論回復)。
界面特點:回復文本框。
例如:論壇回復(用戶表-回復表-帖子表),用戶可能多次在不同帖子上評論回復費。
增加關系:不管有沒有組合紀錄,insert之,紀錄時間和文字。
刪除關系:根據(jù)關系表(回復表)PK刪除。
5,站內短信型
特點:主副表是同一個,關系表一般有時間字段,有主鍵,重點在關系表文字型的字段用來說明每次發(fā)生關系的內容(消息)或者其他標記位來表示文字已讀狀態(tài)時間等。
界面特點:回復文本框。
例如:站內短信(用戶表-短信表-用戶表),用戶可能給用戶群發(fā)或者單發(fā),有標記位來表示文字已讀狀態(tài)時間等。
增加關系:不管有沒有組合紀錄,insert之,紀錄時間和文字。
刪除關系:根據(jù)關系表(回復表)PK刪除。
6,用戶好友型
特點:主副表是同一個,同集合分組型,關系表兩外鍵組合無重復紀錄,關系表一般不需要時間字段和主鍵。
界面特點:同集合分組型,顯示主表,用搜索代替簡單的checkbox或多選select,或者一條一條的添加。
例如:下載站點的文件,(文件表-關系表-文件表)可以被軟件工具打開,軟件工具本身也是一種文件,可以被下載。用戶的好友,也是用戶(用戶表-好友關系表-用戶表)
增加關系:同版主任命型。
刪除關系:同版主任命型
關系單獨維護一張關系表 這樣就OK了 一張用戶表,一張關系表。。
create table 商品表 (PID int,name varchar(20) primary key(PID));
create table 用戶表 (UID int,name varchar(20) primary key(UID));
create table 商品和用戶關系表 (PUID int,UID int,PID int primary key(PUID),foreign key(UID) references 用戶表(UID),foreign key(PID) references 商品表(PID));
以上,希望對你有所幫助!