zoukankan      html  css  js  c++  java
  • 50个查询系列-第六个查询:查询学过“001”并且也学过编号“002”课程的同学的学号、姓名

    查询学过“001”并且也学过编号“002”课程的同学的学号、姓名:

    我的写法:

    第一步:先查出来学过“001”并且也学过编号“002”课程的同学的学号:

    SELECT t11.t1sid t33id
    FROM 
    (SELECT t1.StuId t1sid FROM tblscore t1 WHERE t1.CourseId='001')t11,-- 001的学生的id
    (SELECT t1.StuId  t2sid FROM tblscore t1 WHERE t1.CourseId='002')t22-- 002的学生的id
    WHERE 
    t11.t1sid=t22.t2sid

    查询的结果是:

    第二步:根据查出来的学生的id去查学生的姓名,学号

    SELECT 
    tblstudent.StuId,tblstudent.StuName
    FROM
    (
    SELECT t11.t1sid t33id
    FROM 
    (SELECT t1.StuId t1sid FROM tblscore t1 WHERE t1.CourseId='001')t11,-- 001的学生的id
    (SELECT t1.StuId  t2sid FROM tblscore t1 WHERE t1.CourseId='002')t22-- 002的学生的id
    WHERE 
    t11.t1sid=t22.t2sid
    )t33-- 查出来的是学过“001”并且也学过编号“002”课程的同学的学号
    ,
    tblstudent
    WHERE tblstudent.StuId=t33.t33id

    查询结果:

    答案的写法是:

     SELECT StuId,StuName FROM tblStudent st
      WHERE (SELECT COUNT(*) FROM tblScore s1 WHERE s1.StuId=st.StuId AND s1.CourseId='001')>0
       AND
       (SELECT COUNT(*) FROM tblScore s2 WHERE s2.StuId=st.StuId AND s2.CourseId='002')>0

    我们看一些这个写法:

    他的主表是学生表(tblstudent)

    SELECT COUNT(*) FROM tblScore s1 WHERE s1.StuId=st.StuId AND s1.CourseId='001'
    这句话是说遍历tblstudent的每一条数据和tblscore里面的每一条数据,要求tblstudent的stuid和tblscore的数据一致:
    这么一来的话候选项是:

    然后

    s1.CourseId='001'这么一来的话:就只剩一条数据了。
    如果满足
    (SELECT COUNT(*) FROM tblScore s1 WHERE s1.StuId=st.StuId AND s1.CourseId='001')>0能查询出来的话就表示满足学过001的课程。
    同理
    (SELECT COUNT(*) FROM tblScore s2 WHERE s2.StuId=st.StuId AND s2.CourseId='002')>0能查询出来的话就表示满足学过002的课程。

    同时满足这两个条件的学生就是同时上过两门课的学生。




  • 相关阅读:
    Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案
    Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
    接口的作用
    Android中Service(服务)详解
    跟 Task 有关的 Intent对象中设置的Flag
    android onNewIntent
    [Android]如何导入已有的外部数据库
    android的文件操作
    MVC 数据验证
    Html辅助方法 之 Form表单标签
  • 原文地址:https://www.cnblogs.com/shenxiaoquan/p/6115563.html
Copyright © 2011-2022 走看看