以下数据库:
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
通过以下查询,我只获得表 MatA和MatB 中可用的输入:
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