将INNER JOIN查询从SQLite转换为SQLite.Swift



我使用LiveCode和SQLite启动了这个应用程序,后来我切换到了Xcode和SQLit.Swift。我使用的是现有的数据库。我在转换某些表的内部联接时遇到了一点问题。

现在我要处理3张表:CrossRef、My_Data和My_Routines

My_Data包含DataID和Data_Name,My_Routines包含RoutineID和Routine_Name。

CrossRef表是这样创建的。它只有两个字段,DataID和RoutineID

CREATE TABLE "CrossRef" ("DataID INTEGER NOT NULL, "RoutineID" INTEGER NOT NULL, FOREIGN KEY("RoutineID") REFERENCES "My_Routines", PRIMARY KEY("DataID","RoutineID"), FOREIGN KEY("DataID") REFERENCES "My_Data"

我正在尝试重新编写下面的行,以便将其与SQLite一起使用。Swift和我真的需要一些帮助。我已经包含了表和字段的表达式

let crossRefTable = Table("CrossRef")
let crossRefRoutineID = Expression<Int64>("RoutineID")
let crossRefDataID = Expression<Int64>("DataID")
let theDataTable = Table("My_Data")
let dataID = Expression<Int64>("DataID")
let data_Name = Expression<String>("Data_Name")
let theRoutineTable = Table("My_Routines")
let routineID = Expression<Int64>("RoutineID")
SELECT My_Data.Data_Name FROM CrossRef INNER JOIN My_Data USING (DataID) WHERE CrossRef.RoutineID = gRoutineID

我已经在线阅读了SQLite.Swift文档,但恐怕对我没有多大帮助。

这是我提出的解决方案。以防有人遇到同样的问题。

let theQuery = crossRefTable.join(.inner, theDataTable, on: crossRefDataID == dataID) .filter(crossRefRoutineID == gRoutineID)

最新更新