У меня есть таблица, называемая students
и таблица, называемая documents
. Каждый студент может иметь любое количество записей documents
таблице documents
, но также может не иметь записей документа. Некоторые из документов могли быть одобрены, другие - нет.
таблица 1: students
, documents
таблице 2. student
PK - user_id
а document
PK - document_id
, а в таблице document
есть user_id
. таблица document
имеет approved
колонку, которая может содержать либо Да, либо Нет. Таким образом, эти две таблицы связаны с user_id
Как я могу написать запрос MySQL (или даже лучше, в стиле Active Record для Code Igniter), который может отображать всех студентов, у которых есть хотя бы один неутвержденный документ?
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);
Query OK, 3 строки затронуты (0,16 с) Записи: 3 Дубликаты: 0 Предупреждения: 0
mysql> select * from students where student_number in (select student_number from documents where !approved);
+ ---------------- + -------------------- + ----------- -------- + | student_number | student_first_name | student_Last_name | + ---------------- + -------------------- + ----------- -------- + | 1 | F1 | L1 | + ---------------- + -------------------- + ----------- -------- + 1 строка в наборе (0,02 сек)
select distinct students.name from students join documents on
students.user_id=documents.user_id where documents.user_id is No