2012-04-18 56 views
1

我已經創建'學生'表,其中'sid'是主鍵,我已經將許多值插入到sid中。我創建了另一個名爲'courses'的表,它有一個主鍵'cid',我也輸入了cid的值。現在,我想創建一個名爲「註冊」的關係表,我也喜歡 -爲什麼我沒有從我的關係表中得到任何輸出?

create table enroll(
    grade char(2), 
    sid int not null, 
    cid int not null, 
    primary key(sid,cid), 
    foreign key (cid) references courses(cid) on delete cascade, 
    foreign key (sid) references students(sid) on delete cascade 
); 

做到現在,當我嘗試查看使用select * from enroll; 我沒有得到任何輸出表。它說「返回0行」。爲什麼是這樣?它不應該從其他表格中獲得sid和cid的所有值嗎?

+2

像任何其他表的id,'enroll'將不包含直到有人任何行插入它們。 – Asaph 2012-04-18 18:01:14

+0

那麼我需要手動複製它們嗎?這就像我在學生的「sid」中插入了大約200個條目,所以我必須在「報名」中再次輸入所有條目嗎? – user1291453 2012-04-18 18:02:40

回答

0

,才能在其他表中創建值的新表,你可以做這樣的事情:

CREATE TABLE new_table AS (SELECT * FROM old_table); 
  • select語句將是會被拉領域。
  • 您可以重命名,如列:選擇[字段名稱]爲[您想字段名稱是什麼]

有關詳細信息,請閱讀this文章

反正你的具體情況:

Create table enroll AS (Select s.sid AS 'Sid', c.cid AS 'Cid' from courses c inner join students s on c.something = s.something) 

取代「.something」與學生

+0

但我必須指定列名第一權?並且我在'enroll'表中有'grade'的條目,這個條目沒有引用任何其他表。我怎樣才能做到這一點? - 等級,學生的sid,課程的cid? – user1291453 2012-04-18 18:19:20

+0

在你的select語句中使用'AS'關鍵字來命名列 – 2012-04-18 18:20:25

+0

,併爲該等級加入id(我假設你有一個id字段)並在你的「AS(選擇.. 「聲明 – 2012-04-18 18:28:06

0

你剛剛創建了表結構,模式,你的表是空的,所以你沒有得到任何結果。

+0

所以我必須手動複製它們嗎?這就像我在學生的「sid」中插入了大約200個條目,所以我必須在「報名」中再次輸入所有條目嗎? - user1291453 7分鐘前 – user1291453 2012-04-18 18:10:27

相關問題