sql - Oracle 8i 中的四表连接

标签 sql oracle join

我想在 Oracle 8i 中连接四个表。这四个表名称是 users、picks、putaways 和 relocates。四个表中的每一个都有一个 user_id 字段。拣选、入库和重新定位看起来像这样:

| USER_ID | PICKS | PICK_VOLUME |
+---------+-------+-------------+

| SMITH12 | 234   | 2431.12     |

除了“PICKS”和“PICK_VOLUME”分别替换为 putaways 和 relocates 外,putaways 和 relocates 表看起来完全相同。

我想进行左连接的表是 users 表,因为它将包含所有 user_id,而不管他们是否只选择了库存而没有重新定位,或者将其中的任何东西都收起来了。换句话说,我希望看到所有记录,即使一些用户只有搬迁,而不是提货、入库和搬迁,或者它们的任意组合。

用户表如下所示:

| USER_ID | SHIFT | GROUP_ID   |
+---------+-------+------------+

| SMITH12 | NIGHT | STOCK_KEEP |

理想情况下,我希望将这三列放在结果集的左侧,将拣选、存放和重新定位表连接到右侧。最终选择结果应如下所示:

| 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;

但它只返回用户在拣货、搬迁和入库表中至少有一项交易的行。这是预料之中的,因为我正在做一个 Vanilla 加入。我假设我需要某种左连接,但我不确定如何在 Oracle 8i 中编写它。

最佳答案

使用 (+) 运算符:

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

关于sql - Oracle 8i 中的四表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12938973/

相关文章:

SQL 查询连接来自不同 fdb 数据库的表

MySQL IF 语句查询问题

查询中的 Sql 更改时间

oracle - 为什么 Oracle 会在导入后锁定我的架构的统计信息?

php - 如何使用 select join two tables by using right to specify the last character of join values in codeigniter?

sql - 控制SQL Server Management Studio脚本生成

sql - Sql Server中图片数据类型转String时的字符问题

mysql - 有没有办法像oracle中的rownum一样获取Mysql中的行号

mysql - 优化 MySQL - JOIN 与嵌套查询

mysql - 使用 COUNT 的 SQL 左连接