【问题标题】:Right Join and Inner join in the same access query同一个访问查询中的右连接和内连接
【发布时间】:2021-01-30 09:47:01
【问题描述】:

我正在尝试使用两个表进行内部联接和右联接。 我不知道哪个应该是第一个。

我想从“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 或“qryInvnt_Especies_DAP”表中 DAP 的 UpperDAP 值。 Range Values - Classes

这是我的查询:过滤器 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;

任何帮助将不胜感激。

谢谢,

【问题讨论】:

标签: sql ms-access


【解决方案1】:

我不清楚您为什么认为需要两个联接。我认为一个简单的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;

【讨论】:

  • 感谢您的帮助。我很确定你最了解。
  • 很棒的解决方案。正是我想要的。谢谢大家。
猜你喜欢
  • 2012-03-29
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 2012-08-08
相关资源
最近更新 更多