联接的 SQL 组合

  • 本文关键字:组合 SQL sql join
  • 更新时间 :
  • 英文 :


以下数据库:

Table MatA:
ID  NomCom_ID   ProFo_ID
1   1           1
2   2           2
Table MatB:
ID  NomCom_ID   ProFo_ID
1   1           2
2   2           2
Table NomCom:
ID  Val
1   Steel
2   Copper
Table ProFo:
ID  Val
1   Sheet
2   Pipe

通过以下查询,我得到了带有链接输入的表 MatA:

SELECT  M.ID,
NomCom.Val AS NomCom,
ProFo.Val AS ProFo
FROM MatA M
LEFT JOIN NomCom      ON M.NomCom_ID = NomCom.ID
LEFT JOIN ProFo       ON M.ProFo_ID = ProFo.ID
;

结果:

Table MatA:
ID  NomCom      ProFo
1   Steel       Sheet
2   Copper      Pipe

通过以下查询,我只获得表 MatAMatB 中可用的输入:

SELECT A.* FROM MatA A
INNER JOIN MatB B
ON A.NomCom_ID = B.NomCom_ID
AND A.ProFo_ID = B.ProFo_ID
;

结果:

Table MatA:
ID  NomCom_ID   ProFo_ID
2   2           2

如何正确语法来获得此结果,但使用来自子表的链接项,如下所示:

Table MatA:
ID  NomCom      ProFo
2   Copper      Pipe

感谢您的任何帮助

如果您只想获取这些 ID 的详细信息,那么您只需从 ID 连接到这些表并获取值字段。

SELECT A.ID, NomCom.Val, ProFo.Val FROM MatA A
INNER JOIN MatB B
ON A.NomCom_ID = B.NomCom_ID AND A.ProFo_ID = B.ProFo_ID
LEFT JOIN NomCom AS n ON A.NomCom_ID = n.NomCom.ID
LEFT JOIN ProFo  AS p ON A.ProFo_ID = p.ProFo.ID

它将执行内部联接,以获得以下结果:

Table MatA:
ID  NomCom_ID   ProFo_ID
2   2           2

然后额外的连接将获取值并返回以下内容:

Table MatA:
ID  NomCom      ProFo
2   Copper      Pipe

最新更新