Несколько строк с 2 условиями в одном столбце MySQL - PullRequest
0 голосов
/ 08 июля 2019

Как выбрать несколько строк с двумя условиями в одном столбце MySQL

стол студентов:

id  name
1   Jhon
2   Anne
3   Charles
4   Bob

Таблица Lesson_contract:

id  lesson_code student_id
1   L1          1
2   L2          1
3   L1          2
4   L1          3
5   L2          3
6   L2          4

Итак, я хочу получить ученика, который использует код урока L1 и L2. Так что результатом должны стать Джон и Чарльз

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Вы должны присоединиться к таблицам, group by name и поставить условие в предложение having:

select s.name
from student s inner join lesson_contract l
on l.student_id = s.id
where l.lesson_code in ('L1', 'L2')
group by s.name
having count(distinct l.lesson_code) = 2

Вы можете удалить distinct, если у учащегося нет возможности дважды пройти один и тот же урок.
См. Демоверсию .
Результаты:

| name    |
| ------- |
| Charles |
| John    |
0 голосов
/ 08 июля 2019

Вы можете сделать это, присоединившись к таблице lesson_contract дважды, один раз для каждого кода урока:

SELECT s.id, s.name FROM students s
INNER JOIN lesson_contract l1
    ON s.id = l1.student_id AND l1.lesson_code = 'L1'
INNER JOIN lesson_contract l2
    ON s.id = l2.student_id AND l2.lesson_code = 'L2'

Внутренние объединения отфильтруют результаты, поэтому вы получите только те строки, в которых оба условия соединениябыли выполнены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...