我在理解可以使用資料庫表實作的類表繼承結構時遇到問題。
現在,例如,教授只能有一個人,否則在我的用例中將沒有意義。另外,我有一個有兩個外鍵的學校表,一個用于教授,一個用于學生。讓我們假設一所學校也只能有一名教授和一名學生。這不是我擁有的真正用例。這個例子只是代表了我真實用例中的關系,在這里解釋太多了。
我不明白的是你將如何收集資料。我正在嘗試創建一個 SQL Server 視圖,我想從學校表的角度加載教授的人和學生的人。例如:
SELECT
School.professor_id
surname,
lastname
FROM dbo.School AS school
INNER JOIN dbo.Professor as prof
ON school.professor_id = prof.ID
INNER JOIN dbo.Person as prof_person
ON prof.person_id = prof_person.ID
我可以輸出教授的姓氏和姓氏,但現在我被卡住了,因為我不知道如何獲取學生的人。
uj5u.com熱心網友回復:
子型別表通常與超型別表共享一個鍵,而不是擁有自己的 PK 和 FK。EG Student.ID 既是 PK 也是 FK。
然后除了教授>人之外,只需加入學生>人,例如
SELECT
School.Id,
prof_person.surname prof_surname,
student_person.surname student_surname
FROM dbo.School AS school
INNER JOIN dbo.Professor as prof
ON school.professor_id = prof.ID
INNER JOIN dbo.Person as prof_person
ON prof.ID = prof_person.ID
INNER JOIN dbo.Student as student
ON school.student_id = student.ID
INNER JOIN dbo.Person as student_person
ON student.ID = student_person.ID
INNER JOIN 是關聯的,因此不需要特殊的排序或括號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/425864.html
上一篇:自聯接以更新SQL中的表
下一篇:SQLServer組行
