Преобразование запроса INNER JOIN из SQLite в SQLite.Swift - PullRequest
0 голосов
/ 01 ноября 2019

Я запустил это приложение, используя LiveCode и SQLite, и с тех пор перешел на Xcode и SQLit.Swift. Я использую существующую базу данных. У меня небольшие проблемы с преобразованием внутреннего объединения некоторых таблиц.

Сейчас я имею дело с 3 таблицами: CrossRef, My_Data и My_Routines

My_Data содержит DataID и Data_Name иMy_Routines содержат RoutineID и Routine_Name.

Таблица CrossRef была создана следующим образом. Он имеет только 2 поля: 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, но, боюсь, она мне мало поможет.

1 Ответ

0 голосов
/ 04 ноября 2019

Вот решение, которое я придумал. На всякий случай у кого-то такая же проблема.

let theQuery = crossRefTable.join(.inner, theDataTable, on: crossRefDataID == dataID) .filter(crossRefRoutineID == gRoutineID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...