powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите написать запрос
9 сообщений из 9, страница 1 из 1
Помогите написать запрос
    #39823869
Фотография Roust_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

Есть таблица, в которой идентификаторы студентов и групп (отношение многие ко многим):
CREATE TABLE [dbo].[student_groups](
group_id int,
student_id int)
Дается список идентификаторов студентов, например:
student_id in (1,2,3,4,5)

Как лучше написать запрос, который покажет все группы, в которых присутствует каждый из этих студентов, то есть группы, где есть все пять вышеперечисленных студентов?

Спасибо.
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39823871
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roust_m,

Читать про реляционное деление. Наиболее понятные и простые варианты реализации - на [not]exists подзапросах или на группировке с постфильтрыцией (GROUP BY + HAVING)
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39823980
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина АннаRoust_m,

Читать про реляционное деление. Наиболее понятные и простые варианты реализации - на [not]exists подзапросах или на группировке с постфильтрыцией (GROUP BY + HAVING)

Зачем?
Пущай 5 intersect напишет и фсе.
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39823983
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
n-ый вопрос за месяц... последние студенты перед призывом :)
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39824032
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKn-ый вопрос за месяц... последние студенты перед призывом :)В австралийскую армию?
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39824034
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapTaPaKn-ый вопрос за месяц... последние студенты перед призывом :)В австралийскую армию?
да, промаз :)
Срочный призыв отменён с 1972 года.[2]
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39824077
-- KAB --
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roust_m,

Да чо уж там, всеё группой двоечников выкладывайте всё что вам задали - здесь решат вам всё - энтузиасты )))
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39825155
Фотография Roust_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему двоечники? Это просто не моя специализация, иногда приходится делать что-то за пределами обычных обязанностей. Если нет желания отвечать, можно просто пройти мимо, зачем флуд разводить?

Вот что у меня получилось:
Код: sql
1.
2.
3.
select sg.class_name, count(distinct student_id) cnt from student_groups sg inner join class rc on sg.class_id = rc.id where rc.class_group = 1
and student_id in (1, 2, 3, 4, 5)
group by class_name having count(distinct student_id) = 5;



Думаю, что несколько коряво, поэтому решил спросить на форуме.
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39825165
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare @s table( id int primary key)

insert @s
select 1 union all select 2 union all select 3 union all select 4 union all select 5;


with t as ( select * from [dbo].[student_groups] )
   , x as ( select * from @s )
   , g as ( select distinct t.group_id from t inner join x on t.student_id = x.id )
  select * from g
    where not exists ( select * from x left outer join ( select * from t where t.group_id = g.group_id ) as t on t.student_id = x.id where t.student_id is null )
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите написать запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]