У меня есть таблица людей с уникальным идентификатором 'id'. Действия, выполняемые этими людьми, хранятся в таблице people_activity со столбцами «type» (тип действия, целое число) и «id», которые соответствуют человеку. У меня есть запрос, в котором я зацикливаюсь на множестве людей одновременно, но я бы хотел добавить к этому запросу условия, при которых человек выполняет или не выполняет 0 или более действий.
Если бы я опрашивал одного человека, это было бы просто "где people_activity.type = 4 и people_activity.type <> 12" и т. Д., Но так как я оттягиваю многих людей, я не совсем уверен, как это сделать.
Мой текущий запрос с неверным предложением where для типа (извините, я упростил его в своем объяснении):
select first , middle , last , y.dob , rid.rid as rid , rid.record_number
from (select first, middle, last, email, added, phone, a.revision as revision, type, lastupdated, a.rid as rid from people a inner join (select people.rid, max(revision) as revision from people group by people.rid) b on a.rid = b.rid and a.revision = b.revision) p inner join youth y on p.rid = y.rid
inner join language l on y.language_t = l.language_id
inner join cases on y.case_id = cases.id
inner join race r on y.race_t = r.race_id
inner join providers_r cp on y.provider_id = cp.provider_id
inner join rid on y.rid = rid.rid
where p.first like "c%" and p.middle like "%" and p.last like "%" and exists (select * from youth_activity where type = 2)
group by y.rid
order by last asc
Вы увидите мой текущий способ сделать это, "где существует (выберите * из youth_activity, где type = 4)", не годится, потому что это просто проверяет, что один тип 4 существует вообще, и не обязательно для конкретные люди вернулись в запросе.