我的代码如下:

let assetTag = Expression<String>("asset_tag")


let query2 = mdm.select(mdm[assetTag],os, mac, lastReported)
                .filter(mdm[assetTag] != "ipad" && location == facility)
                .order(mdm[assetTag])
                .join(mdm, on: ewp[assetTag] == mdm[assetTag])



            let results2 = try! db.prepare(query2)

我得到的错误是:
致命错误:“尝试!”表达式意外引发错误:列名不明确:mdm.asset_tag(代码:1):file/library/caches/com.apple.xbs/sources/swiftlang/swiftlang-802.0.53/src/swift/stdlib/public/core/errortype.swift,第182行
我的数据库有两个表,一个叫做EWP,另一个叫做MDM。两者都有一个名为asset_tag的列,所以我想通过执行MDM[assettag]来选择正确的列,但它仍然会抛出错误。
编辑
仍然无法解决问题。我创建的表如下:
let db = try Connection("\(path)/db.sqlite3")

        try db.run(ewp.create { t in
            t.column(assetTag)
            t.column(location)
            t.column(deviceStatus)

        })

        try db.run(mdm.create { t in
            t.column(assetTag)
            t.column(os)
            t.column(mac)
            t.column(lastReported)

        })

    }

出于某种原因,MDM[assettag]仍然表示该列不明确,但只有一个这样的列。

最佳答案

找到了答案。我自己加入了MDM表。我需要将联接更改为:
.join(ewp, on: ewp[assetTag] == mdm[assetTag])

关于swift - Sqlite.Swift不明确的列名Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44953604/

10-13 07:21