在關係數據庫中,我有三個表。使用SQL Server。通過一般關係選擇表的
person(id, type)
student(id, person_id, type, student specific fields)
teacher(id, person_id, type, teacher specific fields)
學生和老師都是人,所以學生在老師和學生表中都會有記錄。學生和老師都有外鍵給人。學生和老師有不同的字段定義,因此工會不起作用。
現在我有該人的身份證,並根據該人是否是學生或教師我想從相關表格(不是人)中選擇*。
例如,如果該人是學生,我希望我的查詢選擇學生表。
我可以想到一些低效的方法,但我正在尋找最佳方法。
你想返回哪些列?如果不知道這種查詢,就無法正確構建。 – RBarryYoung
如果學生和教師'是'人(即繼承人),那麼你可能不需要一個新的代理鍵 - 他們可以繼續使用'person(id)'鍵 – StuartLC
你還沒有指出你的數據庫系統,重複使用,但在標準SQL中,任何特定的查詢只會引用特定的表,並且結果集的「形狀」(即列,特別是每列的名稱和類型)是固定的。 –