Ios SQLite.swift连接缺少的信息
我试图使用Ios SQLite.swift连接缺少的信息,ios,sqlite,swift,sqlite.swift,Ios,Sqlite,Swift,Sqlite.swift,我试图使用SQLite.swift库在swift中连接几个表,但遇到了一些问题。下面的代码显示了该问题: 我首先加入表格: let ext_tasks = tasks.join(tasktypes, on: tasktypes[tty_id] == tasks[task_type]) .join(preUsers, on: preUsers[Worker_ID] == task_ownerID) .order(task_dueDate) .
SQLite.swift
库在swift中连接几个表,但遇到了一些问题。下面的代码显示了该问题:
我首先加入表格:
let ext_tasks = tasks.join(tasktypes, on: tasktypes[tty_id] == tasks[task_type])
.join(preUsers, on: preUsers[Worker_ID] == task_ownerID)
.order(task_dueDate)
.filter(task_ownerID == iUserID)
此时,我已将表连接起来,并且任务
、任务类型
和预用户
中的所有字段都正确地存在
下面我运行第二个join语句:
let ext_equipment = equipment.join(equipment_type, on: equipment_type[eqt_id] == equipment[equ_type])
.join(facilities, on: facilities[fac_id] == equipment[equ_facid])
.join(eqowners, on: eqowners[Worker_ID] == equipment[equ_owner])
.order(equ_make)
.filter(equ_status >= 0)
同样,在运行此语句后,我可以访问设备
、设备类型
、设施
和设备所有者
表中的所有字段,到目前为止,一切都按预期运行
但是,我尝试使用以下方法将上述两个结果结合起来:
let comp_tasks = ext_tasks.join(ext_equipment, on: ext_equipment[equ_id] == ext_tasks[task_eqID])
.order(task_dueDate)
这里是我遇到问题的地方,似乎有来自ext\u任务
查询的表,但只有来自ext\u设备
查询的equipment
表可用
此外,当我尝试访问“facility.”“facility\u name”
字段时,我会收到以下消息,表示该字段不存在:
致命错误:以下列中没有此类列“设施”。“设施名称”:
[“设备”,“设备类型ID”,“设备”,“设备”,“设备ID”,“设备”,“设备”,“设备所有者ID”,“设备”,“设施ID”,“设备”,“状态”,“预用户”,“客户ID”,“预用户”,“最后登录日期”,“预用户”,“第一名”,“任务类型”,“任务类型”,“任务类型”,“任务”,“任务”,“设备ID”,“任务”,“任务”,“所有者ID”,“任务”,“优先级”,“任务”。“完成时间”、“任务”、“开始时间”]:
(为了缩短答案,我删除了其中的一些列,总共显示了53个字段)但由于您只能看到第一个联接中的表+显示了设备表,因此第二个查询(设备类型、设施和设备所有者
)中的联接不见了
如果有人能告诉我为什么会发生这种事,我会很感激的,这已经折磨了我好几个小时的大脑,我就是想不出来
提前感谢!这可能是一个错误。您的查询太复杂了,现在可能无法正确生成。您能否尝试在GitHub上打开一个问题,并提供足够的信息进行复制?作为一种解决方法,我确实更改了加入策略,而不是加入两个(已加入)查询时,我只是不断添加一个又一个连接,使查询更大,效率更低,因为我必须通过5个连接才能达到我想要的目的,但问题得到了解决。感谢Stephen的评论,我将在github中打开一个bug