我有一个名为students
的表和一个名为documents
的表。每个学生在documents
表中可以有任意数量的文档条目,但是也可以没有文档条目。有些文件可能已经获得批准,而另一些则没有。
表1:students
,表2 documents
。 student
PK为user_id
,document
PK为document_id
,并且document
表中也包含user_id
。 document
表的列approved
可以包含是或否。因此,这两个表通过user_id
链接
我如何编写MySQL查询(或者甚至更好,采用Active Record样式的Code Igniter),该查询可以列出具有至少1个未经批准的文档的所有学生?
答案 0 :(得分:1)
mysql> create table students (student_number int, student_first_name char(25), student_Last_name char(25));
查询确定,受影响的0行(0.34秒)
mysql> create table documents (student_number int, document_name char(25), approved bool);
查询确定,受影响的0行(0.32秒)
mysql> insert into students values (1,"F1","L1"),(2,"F2","L2"),(3,"F3","L3");
查询确定,受影响的3行(0.19秒) 记录:3重复:0警告:0
mysql> insert into documents values (1,"D1",0),(1,"D2",1),(3,"D3",1);
查询确定,受影响的3行(0.16秒) 记录:3重复:0警告:0
mysql> select * from students where student_number in (select student_number from documents where !approved);
+ ---------------- + -------------------- + -------- ----------- + |学生编号| student_first_name |学生姓氏| + ---------------- + -------------------- + ----------- -------- + | 1 | F1 | L1 | + ---------------- + -------------------- + ----------- -------- + 设置1行(0.02秒)
答案 1 :(得分:0)
select distinct students.name from students join documents on
students.user_id=documents.user_id where documents.user_id is No