MySQL-根据另一张表的列数从一张表中获取记录

时间:2018-06-28 22:48:10

标签: php mysql codeigniter activerecord

我有一个名为students的表和一个名为documents的表。每个学生在documents表中可以有任意数量的文档条目,但是也可以没有文档条目。有些文件可能已经获得批准,而另一些则没有。

表1:students,表2 documentsstudent PK为user_iddocument PK为document_id,并且document表中也包含user_iddocument表的列approved可以包含是或否。因此,这两个表通过user_id链接

我如何编写MySQL查询(或者甚至更好,采用Active Record样式的Code Igniter),该查询可以列出具有至少1个未经批准的文档的所有学生?

2 个答案:

答案 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