Использование результатов одного запроса для фильтрации следующего - PullRequest
0 голосов
/ 23 мая 2018

У меня есть 3 таблицы UserInfo, Class & ClassAttendance.

Я пытаюсь объединить два запроса, чтобы я мог обновить информацию о пользователе

Мой первый запрос ищет в таблице курса курсы в пределахдиапазон дат

Select ClassID from Class 
Where ClassDate > '04/23/2018'

Мой второй запрос обновляет информацию в зависимости от того, сколько раз участник посещал класс

update UserInfo 
SET ParticipationStatus = 'standard participant'
where (
select count(MemberID)
from ClassAttendance
WHERE UserInfo.MemberID=ClassAttendance.MemberID

) >= 4

Я предполагаю, что использование Join будет лучшим способомно я не могу понять это

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вы можете попробовать pl / sql:

begin

for x in (select ClassID from Class 
                 where ClassDate > '04/23/2018')
loop
   for y in (select MemberID, count(ClassId) as Member_count from ClassAttendance
                    where ClassId = x.Class group by MemberId having count(ClassId) >=4 )
   loop
        update UserInfo SET ParticipationStatus = 'standard participant' where MemberID = y.MemberId;
   end loop;
end loop;

end;
0 голосов
/ 24 мая 2018

Не уверен в ожидаемом выходе, если необходимо объединение, просто проверьте, поможет ли приведенный ниже запрос:

update UserInfo 
SET ParticipationStatus = 'standard participant'
where (SELECT count(ClassAttendance.MemberID) as MEM_cnt
from ClassAttendance
join UserInfo
on UserInfo.MemberID=ClassAttendance.MemberID) > =4;
...