SQL.swift从多个表中选择

时间:2018-01-23 14:52:46

标签: ios swift sqlite.swift

我使用SQL.swift但是我找不到在连接期间从多个表中选择值的方法。我的数据库结构如下:

airport --* tower --* tower_frequency

机场可以有多个控制塔,每个控制塔可以有几个无线电频率。鉴于机场ident,我想选择所有无线电频率。

我使用

构建查询
let airportTable = Table("airport")
let uid = Expression<Double>("id")
let ident = Expression<String>("ident")

let towerTable = Table("tower")
let frequencyTable = Table("tower_frequency")

var query = airportTable
    .select(airportTable[*], towerTable[*], frequencyTable[*])
    .join(towerTable, on: airportTable[uid] == towerTable[fkAirportId])
    .join(frequencyTable, on: towerTable[uid] == frequencyTable[fkTowerId])
    .filter(airportTable[ident] == icao)

生成的SQL来自query.asSQL()

SELECT "airport".*, "tower".*, "tower_frequency".* FROM "airport" 
INNER JOIN "tower" ON ("airport"."id" = "tower"."fk_airport_id") 
INNER JOIN "tower_frequency" 
ON ("tower"."id" = "tower_frequency"."fk_tower_id") 
WHERE ("airport"."ident" = 'SBP')

在我在db中手动运行它时工作正常,但SQL.swift抛出异常No such table: "tower"

1 个答案:

答案 0 :(得分:0)

我发现当我在第三个表的第二个上使用星型查询frequencyTable[*]时会发生这种情况。当我使用显式查询时,它可以工作 :.select(airportTable.table[*], frequenciesTable.table[frequencyCol])

我将在项目中打开一个错误

相关问题