2015-11-02 17 views
3

我想使用多對多的關係。怎樣才能在sql中和學生一起做主題和主題。java中的Sql Junction Table

學生表有

student_IDno | full name | address | 

和主題表有

subject_IDno| title | description | time |

我想學生ID號分配給 主題表,使載物臺可以讓學生

我可以在主題表中做同樣的事嗎?將主題ID號碼分配給學生表,以便它也可以有主題?

如果我搜索學科代碼的學生將出現, 反過來與學生如果我搜索學生代碼科目也會出現。

什麼是最好的辦法呢?我希望我很好的解釋我的問題謝謝你們。

+6

只需增加一個表 - 'studentsubject'例如用'studentid'和'subjectid'作爲複合主鍵。然後你可以查詢任何方式並相應地加入。 – sgeddes

+1

student_id和subject_id將如何編號?我會在哪裏得到他們的身份證號碼? – unknown

+2

新表中的student_id和subject_id值將來自想要「鏈接」的學生表(student_IDno)和科目表(subject_IDno)。 – Thevenin

回答

1

您將介紹一個THIRD表來建立表STUDENT和SUBJECT之間的關係。讓我們打電話CLASS。它將包含以下列:

classID | student_IDno | subject_IDno

可以說一個學生在學校註冊。一個條目將被插入學生與一個獨特的student_IDno。 (可以說1)

主題列表當然位於SUBJECT表中。

現在,如果學生想要報名學科,他將不得不加入CLASS。現在,您將他與一類student_IDno = 1和subject_IDno =什麼主題,他報名參加

那麼你的類表的樣子:

classID | student_IDno | subject_IDno 
    1 |  1  |  1 
    2 |  1  |  2 
    3 |  1  |  3 

你可以看到它是如何顯示有多少個班的學生1具有?

你如何做一個搜索?假設你想找到正在服用SUBJECT 1的學生。

SELECT student.* FROM CLASS as class 
JOIN SUBJECT as subject ON class.subject_IDno = subject.subject_IDno 
JOIN STUDENT as student ON class.student_IDno = student.student_IDno 
WHERE subject.subject_IDno = 1 

我把剩下的給你。我想你應該已經明白了。

more on SQL join here

+0

它幫助感謝很多:) – unknown