Microsoft Access 2016:有条件的内部加入多个案例

时间:2017-11-30 19:08:19

标签: sql ms-access join switch-statement

我希望我所要求的是有道理的。我希望有一个查询根据用户输入选择特定类型的内连接。

这就是我所拥有的。

查询:

  • qryFiltered(主查询)
  • qryLand(sub)
  • qrySea(sub)
  • qryAllOrder(sub)

表:

  • tblLowPriority

形式:

  • EnterWork(具有名为ogLandSea的选项组)

在我的主查询“qryFiltered”中,我有以下SQL代码:

SELECT qryAllOrder.*

FROM
SWITCH
(Forms!EnterWork!ogLandSea = 1, (qryAllOrder LEFT JOIN tblLowPriority ON qryAllOrder.[WORK_ORDER_NBR] = tblLowPriority.[WO]) INNER JOIN qrySea ON qryAllOrder.WORK_ORDER_NBR = qrySea.WORK_ORDER_NBR,

Forms!EnterWork!ogLandSea = 2, (qryAllOrder LEFT JOIN tblLowPriority ON qryAllOrder.[WORK_ORDER_NBR] = tblLowPriority.[WO]) INNER JOIN qryLand ON qryAllOrder.WORK_ORDER_NBR = qryLand.WORK_ORDER_NBR)

WHERE tblLowPriority.WO Is Null

基本上,我正在寻找的是根据用户在表单上选择的内容来选择连接。内连接将根据此输入选择qrySea或qryLand。我得到的错误是:“FROM子句中的语法错误。”

我在这里做错了什么?这是Switch功能不起作用。我在没有Switch功能的情况下单独尝试了两个陆地和海洋选项,它可以工作。我似乎无法找到根据用户输入进行内部连接更改的方法。

感谢您的所有回复!

1 个答案:

答案 0 :(得分:0)

我能够通过从主查询到两个子查询的左连接来实现此功能。然后我在WHERE子句中添加了一个Switch标准:



WHERE (Switch([Forms]![EnterWork]![ogLandSea]=1,[qrySea]![WORK_ORDER_NBR] Is Not Null Or [qrySea]![WORK_ORDER_NBR] Is Null Or [qryLand]![WORK_ORDER_NBR] Is Not Null,[Forms]![EnterWork]![ogLandSea]=2,[qrySea]![WORK_ORDER_NBR] Is Not Null,[Forms]![EnterWork]![ogLandSea]=3,[qryLand]![WORK_ORDER_NBR] Is Not Null,[Forms]![EnterWork]![ogFN]=4,[qrySea]![WORK_ORDER_NBR] Is Null And [qryLand]![WORK_ORDER_NBR] Is Null))<>False)
&#13;
&#13;
&#13;

基本上,这就是它的作用:

  • 选项1:显示主查询中的所有记录
  • 选项2:仅显示qrySea中的记录
  • 选项3:仅显示qryLand中的记录
  • 选项4:仅显示不在qrySea和qryLand
  • 中的记录