[英]How to put more than one relational id in one column mysql?
假設我首先有兩個表是:
Course table
----------------
|id | name |
|0 | pr course|
|1 | science |
----------------
另一個是:
Teacher table
----------------------
|id | name | Courses |
|0 | mark | 0 ,1 |
|1 | john | 0 |
----------------------
我想在課程列中輸入老師給出的課程ID,以便在join語句中使用它們。 做這樣的事的最好方法是什么。 我希望我足夠清楚,謝謝。
設計數據庫的方式違反了“ 第一范式” ,即表示數據庫的每個屬性都應該是原子的。 通常,“ Courses
列不是原子的,因為它是一個列表。
您需要創建一個新的表,如GivenBy
GivenBy table
------------------------
|course_id | teacher_id|
------------------------
在此表中,主鍵由2列(course_id和Teacher_id)組成。 每行存儲一個教師和一門課程之間的一種關系。 最后,您應該具有引用Course
和Teacher
的ID的外鍵
您可能只想添加第三個表來處理教師與課程的關系。
TeachersCourses table
----------------------
|teacher_id|course_id|
----------------------
然后,您可以在此表上使用連接語句。 不要試圖在一個欄中輸入一個以上的值(尤其是沒有鍵)。
這是存儲逗號分隔值的糟糕方法,但是如果您沒有能力更改它,則可以嘗試類似方法。
查詢
select t.name as TeacherName, c.name as CourseName
from Teacher t
inner join Courses c
on ',' + t.id + ',' like '%,' + cast(c.id as nvarchar(20)) + ',%'
樣本數據
create table Courses
(
id nvarchar(60),
name nvarchar(60)
)
insert into Courses values (0 ,'pr course'), (1 ,'science')
create table Teacher
(
id nvarchar(60),
name nvarchar(60),
courses nvarchar(60)
)
insert into Teacher values (0,'mark','0,1'), (1,'john','0' )
輸出值
TeacherName CourseName
mark pr course
john science*
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.