Есть такая таблица:
Как видно? у Иванова и Сидорова идентичный набор учеников. Как вытащить из таблицы Иванова и Сидорова? Или как вытащить данные учителей с одинаковым набором учеников?
Поиск всех учителей у которых строго заданный набор учеников:
SELECT teacher_id
FROM `teacher_student` a
GROUP BY teacher_id
HAVING count(1)=4 and sum(student_id IN (10,7,9,8))=4
Поиск учителей у которых есть как минимум данные ученики, но, возможно, не только они:
SELECT teacher_id
FROM `teacher_student` a
WHERE student_id IN (10,7,9,8)
GROUP BY teacher_id
HAVING count(1)=4
В чем проблема, просто делаем запрос:
SELECT teacher_id FROM your_table WHERE student_id='$1' AND student_id='$2' ... AND student_id='$n';
Условия WHERE надо будет сформировать программно в зависимости от того, какой вы используете язык программирования. Например, для PHP будет такой код:
$where = array();
foreach ($students as $a) $where[] = "student_id='".$a."'";
$where = implode(" AND ", $where);
где $students
набор id учеников, а $where
- наши условия поиска.
P.S. Также настоятельно рекомендую назначить на колонку student_id индекс.
Нашел отличное решение
SELECT teacher_id
FROM `teacher_student` a
WHERE student_id IN (10,7,9,8) AND
EXISTS
(
SELECT 1
FROM `teacher_student` b
WHERE a.teacher_id = b.teacher_id
GROUP BY teacher_id
HAVING COUNT(DISTINCT student_id) = 4
)
GROUP BY teacher_id
HAVING COUNT(*) = 4
https://stackoverflow.com/questions/16461707/mysql-only-in-equivalent-clause
Работает.
А как интересно можно сделать выборку учителей у который данный на вход набор учеников В ТОМ ЧИСЛЕ среди его учеников?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
я мало что понимаю в java, поэтому я не могу сделать вывод результатов вычислений на экранкак можно это сделать в данном случае? пока сделать...
Загружаю разные списки с фильмами в лоадере + реализовал простой бесконечный скроллингИспользую FragmentStatePagerAdapter для отображения разных списков
Доброго времени сутокЕсть файл, от которого мне нужно узнать, насколько давно он был создан