[英]evaluate condition
我有3張桌子:課程,教授,學位。
課程表列出了所有正在教授的課程以及使用教授ID分配給該教授的教授。 教授表列出了所有教授以及他們的一般聯系信息。 它的主鍵是教授ID。 學位表列出了所有教授使用其教授ID作為外鍵持有的學位。
我遇到的問題是,當我想列出每門課程以及所指派的教授以及該教授是否具有博士學位時。 如果它們確實返回“ Y”,否則返回“ N”。 盡管表格中每個教授都有多個條目,但我只希望每個教授獲得一個結果。
ProfessorID Professor
01 Mary Smith
02 Harry Johnson
03 Teddy Fitz
04 Larry Manson
05 Sarah Love
CourseID CourseName ProfessorID
001 Math 101 01
002 English 201 01
003 English101 02
004 Math 101 03
005 Science 101 04
DegreeID Degree Doctorate Degree ProfessorID
0001 BA N 01
0002 MS N 01
0003 PHD Y 01
0004 BA N 02
0005 MS N 02
0006 BA N 03
0007 MS N 03
0008 EDD Y 03
0009 BA N 04
我想要的結果是:
Course Professor Doctorate
Math 101 Mary Smith Y
English 201 Mary Smith Y
English101 Harry Johnson N
Math 101 Teddy Fitz Y
Science 101 Larry Manson N
但是,我不斷獲得教授所擁有的每個學位的結果; 無論是博士學位還是不博士學位。 如以下內容:
Course Professor Doctorate
Math 101 Mary Smith Y
Math 101 Mary Smith N
English 201 Mary Smith Y
English 201 Mary Smith N
English101 Harry Johnson N
Math 101 Teddy Fitz Y
Science 101 Larry Manson N
我應該如何編碼?
有多種修復方法。 給定最終結果表,您可以使用類似於以下內容的語句來獲取所需的結果:
SELECT Course, Professor, MAX(Doctorate) as Doctorate
FROM YOUR_RESULTING_TABLE
GROUP BY Course, Professor
字母的MAX()函數根據字典順序(字母順序)返回。
有很多方法可以實現您想要的。 我將舉兩個例子:
您可以使用LEFT JOIN
+ COALESCE
,因為那些沒有博士學位的教授可以默認為'N':
SELECT
A.CourseName,
B.Professor,
COALESCE(C.Doctorate, 'N')
FROM course_table as A
LEFT JOIN professor_table as B
ON A.ProfessorID = B.ProfessorID
LEFT JOIN degree_table as C
ON B.ProfessorID = C.ProfessorID AND C.Doctorate = 'Y'
更新:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.