在完整的外关节之后是否有 where 或 group by for 以显示负数?

Is there a where or group by for after a full outer joint to show the negative?

我正在尝试查询一个 DB sql oracle,它结合了 2 tables 数据但显示了没有任何订单的位置。

我已经用主要公司的 Mile 的相关网格创建了一个 location_t。我已经为网格提供了一个映射到客户 table.

的位置 ID

我需要编写一个查询来显示没有客户订单的网格。

我已经开始使用完全外连接进行查询

Selectcustomer.location_id,位置-t.grid_location 来自客户 全外连接 location_t 在 customer.location_Id = location_t.location_Id

这有效,但当然会为所有未使用的 ID 提供带 - 的结果。

是否有一个 where 子句,它只会在没有客户订购的情况下显示空 ID。

也欢迎提供更好的方法示例。谢谢

I need to write a query which shows the grids that have no Customer orders.

假设你真的想要没有顾客的地点,那么我想到了not exists:

select l.*
from location_t l
where not exists (select 1
                  from customer 
                  where c.location_Id = l.location_Id
                 );

将网格左连接到客户,然后要求仅返回客户为空的行:

SELECT
    *
FROM
  location_t l
  left outer join customer c on c.location_Id = l.location_Id
WHERE
  c.location_id IS NULL

当您执行 WHERE 时,将连接列指定为空值,或者您知道永远不会自然包含空值的另一列(例如,如果某些客户自然没有中间名,则不要使用客户的中间名,因此该列中有空值作为自然数据的一部分)