mysql - SQL 检查两个表是否具有特定 ID 的相同数据

标签 mysql sql

假设我有一个名为 Catalog 的表,如下所示:

Course Number  CourseName   CourseDsc   PreReq
   1028          CS146      Data S...   1005
   1028          CS146      Data S...   2000
   1028          CS146      Data S...   2003

还有另一个名为 PreviousCourses 的表,如下所示:

Username     PrevCoursesID      Grade
admin          1005              A
admin          2000              A

现在,该用户管理员不满足类(class) CS146 的先决条件,因为他具有三个先决条件中的两个(1005 和 2000),但缺少先决条件 2003。我的查询设置方式是它检查 PreviousCourses 是否是 Catalog 的子集。基本上,如果满足特定类(class)的任何先决条件,则允许用户注册该类(class)。我希望我的查询的行为是,只有满足特定类(class)目录中的所有先决条件,用户才能注册。 我的查询尝试:

"Select PrevCoursesID, Grade from PreviousCourses where "
                        + "Grade <= 'D' AND "
                        + "PrevCoursesID IN (Select PreReq from Catalog where CourseNumber = '" + courseID + "') AND"
                        + " Username = '" + currentUser + "'";

更新:刚刚尝试了此查询,但似乎不起作用

         SELECT CATALOG.prereq, previouscourses.grade
         FROM CATALOG LEFT JOIN PREVIOUSCOURSES ON   
         CATALOG.prereq=PREVIOUSCOURSES.PREVCOURSESID AND   
    PREVIOUSCOURSES.GRADE<='D' WHERE PREVIOUSCOURSES.USERNAME='ADMIN' 
AND CATALOG.COURSENUMBER='1028'

最佳答案

这些是用户可以参加的类(class):

DECLARE @UserName varchar(255) = 'admin'


    SELECT c.[Course Number]
    FROM Catalog c
    GROUP BY c.[Course Number]
    HAVING COUNT(1) =  (SELECT COUNT(DISTINCT pc.PreReq) 
                        FROM PreviousCourses pc
                        WHERE pc.Username = @UserName 
                              AND c.PreReq = pc.PrevCoursesID 
                              AND pc.Grade IN ('A', 'B', 'C', 'P', 'Pass')
           OR MAX(ISNULL(c.PreReq, 0)) = 0
    ORDER BY c.[Course Number]

(这是 SQL Server)

关于mysql - SQL 检查两个表是否具有特定 ID 的相同数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34146478/

相关文章:

php - Zend 数据库优先考虑Where 语句

php - 修补基于时间的 sql 注入(inject)

c# - 如何将用户提供的输入添加到 SQL 语句?

sql - 如何创建SQL Server函数以返回int?

sql - 从 100,101,102 等行创建范围(100-106、107、111-119)

mysql - SQL 语法错误?

MySQL SUM() 始终返回 0 值

php - 插入后如何更新数据?

Mysql 4转5查询转换——加入头痛

mysql - 无法在 mysql-workbench 上添加外键约束