MySQL - получение записей из одной таблицы на основе количества столбцов другой таблицы

0

У меня есть таблица, называемая 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), который может отображать всех студентов, у которых есть хотя бы один неутвержденный документ?

  • 0
    приложите усилие, и мы поможем, а не мы.
  • 0
    Я сижу с этим сейчас уже час. У меня нет ничего конкретного, чтобы показать вам. Я попробовал варианты объединений и внутренних запросов с предложением, и ни один из них не был успешным. То, что я не разместил здесь свои усилия, не означает, что я не приложил никаких усилий.
Показать ещё 5 комментариев
Теги:
codeigniter
activerecord

2 ответа

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);

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 сек)

  • 0
    Спасибо. Мне нужно было присоединиться к еще нескольким таблицам, а также добавить группу (поскольку мой вопрос был упрощен до той части, с которой я боролся), но ваш ответ помог мне выбрать правильный путь.
  • 0
    @kobus - Я рад, что вы нашли это полезным.
0
select distinct students.name from students join documents on 
students.user_id=documents.user_id where documents.user_id is No

Ещё вопросы

Сообщество Overcoder
Наверх
Меню