【发布时间】:2017-03-07 16:19:45
【问题描述】:
我有三个表,我需要在它们之间创建一个CROSS JOIN,以显示产品的 ID 和名称以及销售它们的商店,这里是一个示例
TABLE_PRODUCT
ID_PRODUCT | NAME_PRODUCT
1 | Addidas Super Star
2 | Calvin Klein BAG
TABLE_STORE
ID_STORE | NAME_STORE
1 | ThE 98
2 | C&A
TABLE_PROD_STOR
ID_STORE | ID_PROD
1 | 1
2 | 2
我需要以下格式的结果:
ID STORE | STORE | ID PRODUCT | PRODUCT |
1 | ThE 98 | 1 | Addidas Super Star |
2 | C&A | 2 | CALVIN KLEIN HAT |
我最大的问题是,当我执行CROSS JOIN 时,每个名称都会重复两次。解决办法是什么?
【问题讨论】:
-
提示:
INNER JOIN,而不是CROSS JOIN。 -
交叉连接意味着从每个表中取出 # 条记录并将它们相乘,因此 2*2*2 = 8 条记录。 (获取 product 中的每条记录并将其与 store 中的每个 reocrd 配对,然后获取结果并将其与 prod_store 中的每个 reocrd 配对)。内连接意味着从每个表中获取与某些键值(如 ID_Product 和 ID_Store)相关的记录,因为 1= 1 和 2=2 使用内连接只能获得 2 条记录。 This blog 在可视化描述连接类型方面做得很好。
标签: sql oracle join cross-join