我有一个人表唯一的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