我想加入 Oracle 8i 中的四个表。这四个表名是 users、picks、putaways 和 relocates。四个表中的每一个都有一个 user_id 字段。挑选、存放和搬迁如下所示:
| USER_ID | PICKS | PICK_VOLUME |
+---------+-------+-------------+
| SMITH12 | 234 | 2431.12 |
putaways 和 relocates 表看起来相同,除了 'PICKS' 和 'PICK_VOLUME' 分别被 putaways 和 relocates 替换。
我想要进行左连接的表是 users 表,因为它将包含所有 user_id,无论他们是否只选择库存并且没有重新定位,或者将其中任何一个都收起来。换句话说,即使某些用户只有重新定位,而不是选择、存放和重新定位,或者它们的任何组合,我也希望查看所有记录。
用户表如下所示:
| USER_ID | SHIFT | GROUP_ID |
+---------+-------+------------+
| SMITH12 | NIGHT | STOCK_KEEP |
因此,理想情况下,我希望将这三列放在结果集的左侧,将picks、putaways 和relocates 表连接到右侧。最终选择结果应如下所示:
| 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 查询:
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;
但它只返回用户在pick、relocates 和putaways 表中至少有一个事务的行。这是意料之中的,因为我正在做一个香草加入。我假设我需要某种左连接,但我不确定如何在 Oracle 8i 中编写它。