因此,这里是一个问题的介绍。 2表:如何执行多个过滤器
- 工人:worker_join_id,birth_date
- 客户端:client_join_id,worker_join_id,购买日期,client_action
而且我想选择所有的工人和最后一个客户端关联到工具有client_action的条件,以及所述客户端的最后一个buy_date。并添加所有种类的其它表(而不是在问题多的相关)
所以单向的信息与我的条件来选择worker_join_id是
select w.worker_join_id, max(c.buy_date)
from client c
join worker w
on w.worker_join_id = c.worker_join_id
where c.client_action IN ('BuyItem1', ''BuyItem2', ''BuyItem4')
group by w.worker_join_id;
这个选择让我获得了特定的工人,我正在寻找,也是我被捕的日期。 但是要从客户端表和其他表中添加信息,我需要做更多的连接。所以,我想提出这个要求的“与”
with MyTable (worker_join_id, buy_date) as (
select w.worker_join_id, max(c.buy_date)
from client c
join worker w
on w.worker_join_id = c.worker_join_id
where c.client_action IN ('BuyItem1', ''BuyItem2', ''BuyItem4')
group by w.worker_join_id)
然后让我选择了加盟mytable上筛选我想要什么:
select {lots of things}
from worker w
inner join client c
on w.w.worker_join_id = c.worker_join_id
and c.buy_date = (select t.buy_date from MyTable t
join client c_tmp
on t.worker_join_id = c_tmp.worker_join_id)
在你的SQL越强可能有注意到这个问题,但是我的子请求给出了太多的行。在我看来,我想要“c_tmp.worker_join_id”和“c.worker_join_id”是同一件事,所以我会得到我想要的,但事实并非如此。
所以,也许我需要彻底改变我的方式围绕问题,但我现在有点块。
如果你们有我的问题的解决方案,我会等待共享反馈。 谢谢。
我是一个oracle数据库 – kaless