我正在尝试将子查询加入另一个表。 我怎样才能做到这一点?
以下是我想要实现的目标。 我有一张表1和表2 - 我已成功加入。 结果如下所示
select max(popi.po_po_id) as PO_ID,
rps.rp_rp_id_artl as STYLE
from table1 popi
inner join table2 rps
on rps.rp_rp_id_artl = popi.popi_for
where popi.popi_for = '100466'
group by rps.rp_rp_id_artl
结果是:
PO_ID |STYLE |
--------------
1004 |100466|
我现在需要链接上面的结果,以便我可以链接表3并从表3中恢复sup_id:
table3:
PO_ID |SUP_ID
-----------------
1001 |Sup1
1002 |Sup2
1003 |Sup3
1004 |Sup4
最后我得到以下结果:
PO_ID |STYLE |SUP_ID
-----------------
1004 |100466|Sup4
任何有关加入桌子的帮助都会很棒。
我试图通过执行子查询然后将结果连接到主表来实现此目的。
答案 0 :(得分:1)
您可以简单地将第一个查询用作内联视图,并将其与第二个表连接,如下所示:
select PO_ID, STYLE, table3.sup_id
from (
select max(popi.po_po_id) as PO_ID,
rps.rp_rp_id_artl as STYLE
from table1 popi
inner join table2 rps
on rps.rp_rp_id_artl = popi.popi_for
where popi.popi_for = '100466'
group by rps.rp_rp_id_artl
) max_po_by_style
inner join table3
on table3.po_id = max_po_by_style.po_id
使用因子子查询也可以实现相同的效果,或许更清楚:
with max_po_by_style as (
select max(popi.po_po_id) as PO_ID,
rps.rp_rp_id_artl as STYLE
from table1 popi
inner join table2 rps
on rps.rp_rp_id_artl = popi.popi_for
where popi.popi_for = '100466'
group by rps.rp_rp_id_artl
select PO_ID, STYLE, table3.sup_id
from max_po_by_style
inner join table3
on table3.po_id = max_po_by_style.po_id
答案 1 :(得分:0)
select max(popi.po_po_id) as PO_ID,
rps.rp_rp_id_artl as STYLE, t3.sup_id
from table1 popi
inner join table2 rps
on rps.rp_rp_id_artl = popi.popi_for
inner join table3 t3
on popi.po_po_id = t3.po_id
where popi.popi_for = '100466'
group by rps.rp_rp_id_artl, t3.sup_id
您可以一次连接多个表 - 连接可以连接两个,三个或更多表
正如David Costa评论的那样,如果table1,table2和table3中存在po_po_id
,则可能会出现问题,但不是table2中rp_rp_id_artl
的最大值。因此,此查询可能会返回更多行,然后返回将table3与分组结果连接起来的查询