是否可以在sqlite.swift中编写一个语句来生成等效的sql:
SELECT foods.name,food_types.name FROM foods,food_types 在哪里foods.type_id = food_types.id限制10;
我无法弄清楚如何一次从多个Table对象进行查询。 谢谢!
答案 0 :(得分:3)
您的原始查询将两个表传递给FROM
子句,从而创建隐式连接。 SQLite.swift的查询构建器语言目前仅支持显式连接。
查看Joining Other Tables下的文档,了解有关加入表格的更多信息。
在你的情况下:
let foods = Table("foods")
let food_types = Table("food_types")
let name = Expression<String>("name")
let id = Expression<Int64>("id")
let type_id = Expression<Int64>("type_id")
let query = foods
.select(foods[name], food_types[name])
.join(food_types, on: foods[type_id] == food_types[id])
.limit(10)
答案 1 :(得分:0)
我明白了。外键是我要加入的所有表的列,但是有些外键成员在所有表中都不常见,所以我相信sql然后生成一个交叉连接vs一个内连接...这导致查询中的所有额外行。我通过使用sqlite.swift直接在db上生成的sql来确认这一点。