标签: cross-join

是否有左交叉连接之类的东西?

有没有办法做我想要的“左交叉连接”?

即,是否有一种方法可以指定 CROSS JOIN ON,但在结果中为左侧的每一行至少返回一行,当右侧表不包含匹配项时,对右侧列使用空值?

join sql-server cross-join

5
推荐指数
1
解决办法
5965
查看次数

T-SQL 不支持相关的 CROSS JOIN 吗?

这个查询有效

SELECT      QMC.HAUSKEY, t1.STRNAME, t2.HAUS_NR
FROM        SWOPS.MIGR.QMCAddresses QMC
CROSS JOIN  (SELECT STRNAME FROM SWOPS.MIGR.EB_DICT_STREET_QMC  WHERE FK=8055909) t1
CROSS JOIN  (SELECT HAUS_NR FROM SWOPS.MIGR.EB_DICT_HAUSNR_QMC  WHERE FK=8055909) t2
WHERE       1=1
        AND QMC.HAUSKEY=8055909
ORDER BY    HAUSKEY, t1.STRNAME, t2.HAUS_NR
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,当我用列引用 QMC.HAUSKEY 替换 CROSS JOIN 子查询中的常量 8055909 时,查询报告错误

Msg 4104, Level 16, State 1, Line 56 The multi-part identifier "QMC.HAUSKEY" could not be bound.

这是为什么?

背景:

QMCAddresses 包含建筑物及其地址

EB_DICT_STREET_QMC 包含 QMCAddresses 中地址的街道名称的可能变体

EB_DICT_STREET_HAUSNR 包含 QMCAddresses 中地址的门牌号的可能变化

我想做的是为每个建筑物地址创建一个笛卡尔积,其中包含其街道名称的所有可能变体和门牌号的所有可能变体。

例如

在此输入图像描述

sql-server t-sql subquery cross-join

0
推荐指数
1
解决办法
227
查看次数

标签 统计

cross-join ×2

sql-server ×2

join ×1

subquery ×1

t-sql ×1