Oracle/SQL - 将一个表多次连接到同一个表

dsc*_*scl 0 oracle join

我试图围绕一个问题包围我的大脑,并希望你可以提供帮助.我有两个表:customer_table和product_table,看起来像这样

name    sku_num1    sku_num2    sku_num3    sku_num4
----------------------------------------------------    
Bob     A           B           C           D
Frank   E           A
Tom     G
Shelly  G           E
Justin  E           G           A

sku_num     widget_name
-------------------
A           widget_a
B           widget_b
C           widget_c
D           widget_d
Run Code Online (Sandbox Code Playgroud)

所以我想要做的是返回所有客户的清单,这些客户至少有一个产品的SKU出现在产品表中.因此,根据上述信息,我会收到回复的记录

短发

坦率

贾斯汀

任何想法如何做到这一点?

a_h*_*ame 5

有没有必要加入一个表两次:

SELECT *
FROM customers
WHERE sku_num1 IN (SELECT sku_num
                   FROM product_table)
   OR sku_num2 IN (SELECT sku_num
                   FROM product_table)
   ....
Run Code Online (Sandbox Code Playgroud)

您需要多个条件来执行全表扫描的原因product_table是您的数据库设计错误.客户购买的产品不应该进入客户表中的多个列.相反,您应该有第三个表,它是客户和产品之间的N:M关系.