Foreign-Key

在不使用連接的情況下引用另一個表中的數據

  • March 17, 2022

大家好,所以我有一個家庭作業,我很難理解。我遇到的問題是:

九。參考 ER 上的 customers 和 shipping_details 表,顯示 customers 表中的所有數據,但僅在 shipping_details 表上的省等於 NS 的地方顯示。不要為此要求使用聯接。

在此處輸入圖像描述

因此,我可以使用連接輕鬆完成問題,但我很難理解如何在不使用連接的情況下引用另一個表。我正在嘗試使用向量聚合函式,但我不清楚如何在不使用連接的情況下引用該表的列中的表和值

由於您不需要從 shipping_details 表中返回任何數據,因此可以使用**semi-join**,它可以使用IN和子查詢或EXISTS相關子查詢來編寫。

例子:

-- Using IN --
select c.*
from customers as c
where c.shipping_detail_id IN
 ( select sd.shipping_detail_id
   from shipping_details as sd
   where sd.province = 'NS'
 ) ;


-- Using EXISTS --
select c.*
from customers as c
where EXISTS 
 ( select 1 
   from shipping_details as sd
   where sd.province = 'NS'
     and sd.shipping_detail_id = c.shipping_detail_id    -- correlation
 ) ;

引用自:https://dba.stackexchange.com/questions/308888