2011-05-14 43 views
0

以下是我的數據庫與4個表(學生,課程,模塊,講師)。我想知道這個數據庫是否正確,如果我正在做正確的操作,我如何使用學生ID從表格中檢索數據如下。如何從關係數據庫中的多值屬性中檢索數據?

  • 哪些模塊學生10122342 了? >>預期的答案:cn103,CN201

enter image description here

(pk) = primary key and (fk)=foreign key 

接下來的事情就是我婉導入從上述表中的一些值到新創建的表?情況是我想從名爲「Everyone」的新創建表的'id'屬性的上表中導入's_id'和'i_id';同時我也希望爲「Everyone」表的'type'屬性生成'0'/'1'值,其中對於從's_id'導入的那些id爲0值,對於從' i_id」。以下是我期望的新數據庫表。

Everyone 
id  |type | 
----------------- 
10122345 | 0 | 
10122342 | 0 | 
10222346 | 0 | 
20432343 | 1 | 
20432311 | 1 | 
20532334 | 1 | 

請誰能幫幫我嗎?是否有可能做與MySQL和PHP?謝謝。

+0

你爲什麼要這樣做?如果學生和指導教師ID重疊?就像這個表格結構一樣,每個學生只能參加一門課程。 – dqhendricks 2011-05-14 16:36:35

+0

另外,foriegn鍵中的逗號分隔值不是很好的做法。你將如何在查詢中使用聯接來調用它?如果您在表格中使用逗號分隔值,則表示需要單獨的表格。 – dqhendricks 2011-05-14 16:37:58

+0

考慮將單獨的表連接在一起。例如有一張表,其中只包含一個學生ID和一個表示哪些學生正在參加哪些課程的課程ID。這樣你可以讓每個學生參加多個課程,每個課程可以由多個學生參加。 – dqhendricks 2011-05-14 16:40:35

回答

1

這應該回答你的第一個問題:

SELECT m_code FROM Module a INNER JOIN Student b ON a.c_code = b.c_code WHERE b.s_id = '10122342' 

我不能拿出回答你的第二個問題,但它應該是與連接,這可能幫助:MySQL Insert & Joins

+0

它只給出'cn103',它也假設檢索'cn201'? – Himalay 2011-05-14 17:53:05

+0

Module表中c_code列的數據類型是什麼? – Jeroen 2011-05-14 17:55:32

+0

現在它是varchar(10)。 – Himalay 2011-05-14 18:02:35