2014-01-22 141 views
0

我有3個表格,Subject,SubjectTeacher和Head。業務規則是每個主題都有一個主管。SQL選擇多個變量

Subject 
ID   Name   Code 
1   Mathematics  Math 
2   Biology   Bio 
3   Zoology   Zoo 

SubjectTeacher 
TeacherID   JoinDate   SubjectID 
1     2001-12-11   1 
2     2004-12-11   2 
3     2002-12-11   3 

Head 
TeacherID   StartDate   EndDate 
1     2001-12-11   2016-12-11 
2     2004-12-11   2014-12-11 
3     2002-12-11   2017-12-11 

我有2個變量,MathHead和BioHead
我想編寫填充這些兩個變量
有2種方式確定我的查詢。一個是臨時表。對於一個看似簡單的問題來說太重了。
其他是多個查詢,每個變量一個。這很簡單/容易,但隨着變量的增加,查詢也會增加。
有沒有更好的方法?
更新: 我正在做這樣的事情。還增加了上述

SELECT @BioHead = TeacherID 
FROM Head head 
JOIN SubjectTeacher st on st.TeacherID = head.TeacherID 
JOIN Subject subject on st.SubjectID = subject.ID 
WHERE subject.Name = 'Biology' 
+0

你提到你有變量,我假設它是T-SQL變量。爲了更容易,請顯示您已有的查詢和/或相關代碼,以獲取您想要的信息。 –

+0

這個可能的重複? http://stackoverflow.com/questions/1340775/sql-select-multi-columns-into-multi-variable – markg

+0

沒有標記。我想在連接表上應用過濾器來說哪些變量應該包含哪些數據。 –

回答

0

一個簡單的方法鏈接表(SubjectTeacher),以在數據庫中應用這個業務規則是隻簡單地對主題與外鍵約束老師一列,除非這是HeadTeacherId和不是表名。不能真正告訴它格式化。

0

也許你應該聯合查詢和輸出一個結果就是這樣,有點像一個「關鍵值」的方法:

TYPE| VALUE 
head | 'The head of the dep' 
teacher | 'the teacher's name' 
subject| 'Biology' 

請提供您所需的輸出,如果這沒有意義。

+0

我想讓TeacherID進入變量 –

+0

你會一直知道你會返回多少個TeacherID嗎?似乎你應該返回結果集,如果你不能確定。 – markg

+0

我知道每個主題只有一個頭像。 –