应用左联接前筛选表

我有两个表,我想在将这两个表连接在一起之前过滤这1个表

客户表:

╔══════════╦═══════╗
║ 顾客║ 状态║
╠══════════╬═══════╣
║ A.║ s║
║ B║ v║
║ C║ L║
╚══════════╩═══════╝

条目表:

╔══════════╦═══════╦══════════╗
║ 顾客║ 进入║ 类别║
╠══════════╬═══════╬══════════╣
║ A.║  5575║ D║
║ A.║  6532║ C║
║ A.║  3215║ D║
║ A.║  5645║ M║
║ B║  3331║ A.║
║ B║  4445║ D║
╚══════════╩═══════╩══════════╝

我想要左联接,因此我从Customer表中获取所有记录,而不管Entry表中是否有相关记录。但是,我想在加入之前在条目表中筛选类别D

预期结果:

╔══════════╦═══════╦═══════╗
║ 顾客║ 状态║ 进入║
╠══════════╬═══════╬═══════╣
║ A.║ s║  5575║
║ A.║ s║  3215║
║ B║ v║  4445║
║ C║ L║  无效的║
╚══════════╩═══════╩═══════╝

如果我要执行以下查询:

选择客户。客户,客户。状态,条目。条目
来自客户
左连接条目
ON Customer.Customer=Entry.Customer
WHERE Entry.Category='D'

这将过滤掉最后一条记录

因此,我需要左表中的所有行,并将其连接到在类别D上筛选的条目表

谢谢你的帮助

您需要将WHERE过滤器移动到JOIN条件:

选择c.客户、c.状态、e.条目
来自客户c
左连接条目e
关于c.Customer=e.Customer
和e.D'

请参阅SQL摆弄演示

发表评论