【问题标题】:IIF statement MS ACCESS VBA SQLIIF 语句 MS ACCESS VBA SQL
【发布时间】:2018-12-11 11:54:43
【问题描述】:

我有 3 张桌子

ConnectivityFile 我有一些属性的 ID

CHAINDD 我有相同属性的酒店代码(可以重复)

Export 我想在其中获取所有酒店代码及其 ID(之前表格的连接)

我可以通过下面的查询来实现这一点

query2 = "SELECT ConnectivityFile.ID as [Hotel ID], ConnectivityFile.HotelCode  
FROM ConnectivityFile 
INNER JOIN (SELECT DISTINCT CHAINDD.HOTELCODE as [Hotel Code] from CHAINDD) as T 
ON ConnectivityFile.HotelCode = T.[Hotel Code]"

DoCmd.RunSQL "INSERT INTO Export " & query2

现在我面临的问题是,假设表 CHAINDD 中的酒店代码不存在于表 ConnectivityFile 上。我想指出作为“未连接”作为导出表上的 ID。

如何做到这一点?当我做了一些尝试和错误但没有成功时,我知道有 IIF 声明。你把 IIf 语句放在哪里?

非常感谢您的帮助和时间

【问题讨论】:

  • 我看到您正在使用内部连接。你熟悉外连接吗?
  • Not Connected是字符串类型,所以如果Export的[Hotel ID]是整数类型会抛出异常。
  • 向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。 How to create a Minimal, Complete, and Verifiable example
  • 我同意@Ru​​udHelderman。你需要一个外部连接。
  • @RuudHelderman,谢谢,我需要按照您的建议进行外部连接。没看到谢谢

标签: sql vba ms-access iif


【解决方案1】:

只要您的查询确实有效,IIF 就会如下所示:
query2 = "SELECT IIF(ISNULL(T.HOTELCODE), ""未连接"", ConnectivityFile.ID) as [酒店 ID]、ConnectivityFile.HotelCode
从连接文件 LEFT JOIN (SELECT DISTINCT CHAINDD.HOTELCODE as [Hotel Code] from CHAINDD) as T ON ConnectivityFile.HotelCode = T.[酒店代码]"

基本上,如果代码在那里,则使用它,否则将字符串保持“未连接”
请注意,导出中的酒店代码字段必须能够处理非唯一数据 - 即:不是主键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-23
    • 2023-03-10
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多