评估条件

时间:2016-02-16 01:35:17

标签: sql tsql

我有3张桌子:课程,教授,学位。

课程表列出了所有正在教授的课程以及被指派教授使用教授ID教授的课程。 教授表列出了所有教授及其一般联系信息。它的主要关键是教授ID。 学位表列出了教授使用他们的教授ID作为外键所持有的所有学位。

我遇到的问题是,当我想要列出每门课程以及指定教授时,以及该教授是否拥有博士学位。如果他们确实返回“Y”,如果不返回“N”。我只想要每位教授一个结果,尽管表中每位教授都有多个参赛作品。

Sample Table 1

MakeLParam

Sample Table 2

private int MakeLParam(int LoWord, int HiWord)
{
    return ((HiWord << 16) | (LoWord & 0xffff));
}

我想要的结果是:

<html>
  <head>
    <!-- Material Design Lite -->
    <script src="https://code.getmdl.io/1.1.1/material.min.js"></script>
    <link rel="stylesheet" href="https://code.getmdl.io/1.1.1/material.indigo-pink.min.css">
    <!-- Material Design icon font -->
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
  </head>
  <body>
    <!-- Always shows a header, even in smaller screens. -->
    <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
      <header class="mdl-layout__header">
        <div class="mdl-layout__header-row">
          <!-- Title -->
          <span class="mdl-layout-title">Title</span>
          <!-- Add spacer, to align navigation to the right -->
          <div class="mdl-layout-spacer"></div>
          <!-- Navigation. We hide it in small screens. -->
          <nav class="mdl-navigation mdl-layout--large-screen-only">
            <a class="mdl-navigation__link" href="">Link</a>
            <a class="mdl-navigation__link" href="">Link</a>
            <a class="mdl-navigation__link" href="">Link</a>
            <a class="mdl-navigation__link" href="">Link</a>
          </nav>
        </div>
      </header>
      <div class="mdl-layout__drawer">
        <span class="mdl-layout-title">Title</span>
        <nav class="mdl-navigation">
          <a class="mdl-navigation__link" href="">Link</a>
          <a class="mdl-navigation__link" href="">Link</a>
          <a class="mdl-navigation__link" href="">Link</a>
          <a class="mdl-navigation__link" href="">Link</a>
        </nav>
      </div>
      <main class="mdl-layout__content">
        <div class="page-content"><!-- Your content goes here --></div>
      </main>
    </div>
  </body>
</html>

然而,我不断得到教授所拥有的每个学位的成绩;无论是否是博士学位。如下:

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

我该如何编码?

2 个答案:

答案 0 :(得分:1)

有不同的修复方法。给定最终结果表,您可以使用类似于以下内容的语句来获取您要查找的结果:

SELECT Course, Professor, MAX(Doctorate) as Doctorate 
FROM YOUR_RESULTING_TABLE 
GROUP BY Course, Professor

字母上的MAX()函数根据字典(字母)顺序返回。

答案 1 :(得分:1)

有很多方法可以达到你想要的效果。我将站点2个例子:

您可以使用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'

更新:

enter image description here