我有一個人表唯一的ID「身份證」的人的現有名單上。這些人進行的活動都存儲在一個people_activity表,與字段的類型「(活動類型,整數)和「ID」,該人物一致。我有一個查詢,我拉回來許多人在一段時間,但我想添加到查詢的條件,一個人或不具有執行0或多個活動。尋找不同類型的0-n行
如果我是查詢一個人,這將是一個簡單的「where people_activity.type = 4和people_activity.type <> 12」等,但因爲我拉回了很多人,我不是相當確定如何去做。
我當前的查詢,用惡劣其中對於類型子句(道歉,我簡化它在我的解釋):
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都存在,並不一定是具體的人在查詢返回。
不會在查詢中只有一個人工作a.youthid = 3子查詢位結果?查詢當前拉回來人的大名單。 – Christopher 2011-03-02 00:23:41
號的相關性'和a.youthid = y.rid'是什麼子查詢(計數)的青年從主查詢鏈接,每個數(每主查詢行)對3比滿足病情'已完成活動1,2,3' – RichardTheKiwi 2011-03-02 00:29:21
優秀!這確實工作。spintheblack的反應是非常有益的,以及只可惜我不能使用全外連接。 – Christopher 2011-03-02 00:40:42