首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle 8i中的四个表连接

Oracle 8i中的四个表连接
EN

Stack Overflow用户
提问于 2012-10-18 00:30:35
回答 2查看 3.2K关注 0票数 3

我想加入Oracle 8i中的四个表。这四个表名是users、picks、putaways和relocates。这四个表中的每个表都有一个user_id字段。拾取、入库和重定位如下所示:

代码语言:javascript
复制
| USER_ID | PICKS | PICK_VOLUME |
+---------+-------+-------------+

| SMITH12 | 234   | 2431.12     |

putaways和relocates表看起来是一样的,除了'PICKS‘和'PICK_VOLUME’分别被putaways和relocates替换。

我想要进行左连接的表是users表,因为它将包含所有的user_ids,而不管他们是只挑选库存而没有重新定位,还是将其中的任何一部分放在一边。换句话说,我希望看到所有的记录,即使一些用户只有重定位,而不是拾取、入库和重定位,或者它们的任意组合。

用户表如下所示:

代码语言:javascript
复制
| USER_ID | SHIFT | GROUP_ID   |
+---------+-------+------------+

| SMITH12 | NIGHT | STOCK_KEEP |

因此,理想情况下,我希望将这三列放在结果集的左侧,并将picks、putaways和relocates表连接到右侧。最终的选择结果应该如下所示:

代码语言:javascript
复制
| USER_ID | SHIFT | GROUP_ID   | PICKS | PICK_VOL | RELOCATES | RELOCATE_VOL | PUTAWAYS | PUTAWAY_VOL |
+---------+-------+------------+-------+----------+-----------+--------------+----------+-------------+

| SMITH12 | NIGHT | STOCK_KEEP | 234   | 2431.12  | NULL      |  NULL        |  4       |   76.52     |

我尝试过这个SQL查询:

代码语言:javascript
复制
select users.user_id, users.group_id, users.shift, pi."Picks", pi."Pick Volume", pu."Putaways", pu."Putaway Volume", re."Relocates", re."Relocate Volume"
from users, pi, pu, re
where users.user_id = pi.user_id
and users.user_id = pu.user_id
and users.user_id = re.user_id;

但它只返回用户在picks、relocates和putaways表中至少有一个事务的行。这是意料之中的,因为我正在做一个普通的连接。我假设我需要某种左连接,但我不确定如何在Oracle8i中编写它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-18 00:32:47

使用(+)运算符:

代码语言:javascript
复制
select users.user_id, users.group_id, users.shift, pi."Picks", pi."Pick Volume", pu."Putaways", pu."Putaway Volume", re."Relocates", re."Relocate Volume"
from users, pi, pu, re
where users.user_id = pi.user_id(+)
and users.user_id = pu.user_id(+)
and users.user_id = re.user_id(+);

http://docs.oracle.com/cd/B28359_01/server.111/b28286/queries006.htm

票数 5
EN

Stack Overflow用户

发布于 2012-10-18 00:42:12

您可以使用"left outer join":

代码语言:javascript
复制
            select users.user_id
                 , users.group_id
                 , users.shift
                 , pi."Picks"
                 , pi."Pick Volume"
                 , pu."Putaways"
                 , pu."Putaway Volume"
                 , re."Relocates" 
                 , re."Relocate Volume"
            from users
            LEFT OUTER JOIN pi
              ON users.user_id = pi.user_id
            LEFT OUTER JOIN pu
              ON users.user_id = pu.user_id
            LEFT OUTER JOIN re
              ON users.user_id = pi.user_id
            ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12938973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档