多个表之间的JOIN功能

AS91

表格:

客户

CID    Name
 1      A
 2      B
 3      C
 4      D
 5      E
 6..(And so on)

访问

VID CID type
1   1   Med
2   3   Non
3   2   Non
4   6   Med
5   4   Med
6..(And so on)

支付

PID   CID  amount
1      1       10
2      1       20
3      2       30
4      2       40
5      3       50
6..(And so on)

所需的输出:

CID  Name  type   amount
1     A     Med    10
1     A     Med    20
4     D     Med    NULL
(And so on..)

询问:

SELECT DISTINCT
C.client_id
,C.name
,V.type
,P.payment

FROM Clients C
INNER JOIN Visit V
    ON C.cid=V.cid
LEFT JOIN Payment P
    ON V.cid=P.cid

我使用了LEFT JOIN,因为我想看看谁付款,谁没有付款。

问题: LEFT JOINS(或外部联接)是否基于左表的CID中由先前的INNER JOINS(公共结果集)产生的公共ID提取数据?还是他们将左侧表中的所有ID都考虑在内,而完全忽略了INNER JOINS结果?我只希望内部联接中存在而不是外部联接中的客户的付款详细信息。

加文·卡特尔

LEFT JOIN会只在该行的运行INNER JOIN收益,或者common data set你提到。

那就是不管LEFT JOIN返回什么,都会INNER JOIN限制基于的结果集Visit V ON C.cid=V.cid

该维恩图显示了将要选择的结果,蓝色区域是将要返回的数据。连接的顺序无关紧要。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章