sql - 同一个访问查询中的右连接和内连接
问题描述
我正在尝试使用两个表进行内部连接和右连接。我不知道哪个应该是第一个。
从“qryInvnt_Especies_DAP”我想加入“Objectivo_DAP”表。
qryInvnt_Especies_DAP 表:
InvntID EspCodigo DAP
15 Ec 15
16 Ec 5
17 Ac 13
18 Ac 19
19 Ac 10
20 Ac 20
21 Ac 4
22 Ac 13
23 Ac 16
24 Qr 14
25 Sb 13
26 Pb 50
27 Pb 20
28 Ec 12
29 Ec 30
30 Ec 5
31 Ec 7
32 Ec 40
Objectivo_DAP 表:
ObjtDAPID EspCodigo Objectivo LowerDAP UpperDAP
1 Ec Rolaria_Ec 5 35
2 Ec Desenrolar_Ec 35 55
3 Ec Folha_Ec 55 200
4 Pb Folha_Pb 45 200
5 Pb Lenha_Pb 0 45
答案应该是:
InvntID EspCodigo DAP Objectivo
15 Ec 15 Rolaria_Ec
16 Ec 5 Rolaria_Ec
26 Pb 50 Folha_Pb
27 Pb 20 Lenha_Pb
28 Ec 12 Rolaria_Ec
29 Ec 30 Rolaria_Ec
30 Ec 5 Rolaria_Ec
31 Ec 7 Rolaria_Ec
32 Ec 40 Desenrolar_Ec
它应该过滤存在于表“Objectivo_DAP”中的 EspCodigo(Ec 和 Pb),并根据 LowerDAP 或 UpperDAP 值插入一个名为 Objectivo 的列,其类型为 Objectivo(Rolaria_Ec、Desenrolar_Ec、Folha_Ec、...) “qryInvnt_Especies_DAP”表中的 DAP。 范围值 - 类
这是我的查询:过滤器 EspCodigo 的右连接和 Objectivo_DAP.Objectivo 的内连接(下或上)
SELECT qryInvnt_Especies_DAP.InvntID,
qryInvnt_Especies_DAP.Nome,
qryInvnt_Especies_DAP.EspCodigo,
qryInvnt_Especies_DAP.DAP,
Objectivo_DAP.Objectivo
FROM qryInvnt_Especies_DAP
RIGHT JOIN Objectivo_DAP ON qryInvnt_Especies_DAP.EspCodigo = Objectivo_DAP.EspCodigo,
INNER JOIN Objectivo_DAP ON qryInvnt_Especies_DAP.DAP >= Objectivo_DAP.LowerDAP
AND qryInvnt_Especies_DAP.DAP < Objectivo_DAP.UpperDAP;
任何帮助,将不胜感激。
谢谢,
解决方案
我不清楚你为什么认为两个连接是必要的。我认为一个简单的inner join
做你想要的:
SELECT qe.InvntID,
qe.Nome,
qe.EspCodigo,
qe.DAP,
od.Objectivo
FROM qryInvnt_Especies_DAP as qe INNER JOIN
Objectivo_DAP as od
ON qe.EspCodigo = od.EspCodigo
WHERE qe.DAP >= od.LowerDAP AND
qe.DAP < od.UpperDAP;
推荐阅读
- recursion - 在 Prolog 中删除了第 K 个表弟 N 次的递归
- java - 将两个多项式相乘(使用单链表)的一种更省时的方法?
- python - 使用“ascii_letters”改进对非字母符号的过滤
- c - 如何编译luaJit的c字节码
- python - 在python中打破if语句
- python - Discord bot 不返回所有成员
- javascript - 如何从 react-native-maps 中获取折线的长度(公里)?
- javascript - 我可以检测用户何时通过直接链接或 react-router 进入我的网站吗?
- cookies - google colab 上的 RVL-CDIP 数据集
- prometheus - 如何从 2 个费率之和计算普罗米修斯百分比