Ios 比较SQLite中的3个表

Ios 比较SQLite中的3个表,ios,sql,sqlite,uitableview,Ios,Sql,Sqlite,Uitableview,最初,我有两张桌子。我规范化了它,因为这些表之间的关系是多对多的。现在我有3个 乔布斯 jID PK jName jDesc 杰宁斯 jTags 课程 cID PK cName cDesc 学校 心肺图 职业介绍所 ID PK 杰德·肯尼迪 cID FK 我的应用程序显示作业的表格视图 单击时,它将显示作业的UIViewcontroller以及相关课程的tableview 如何查询jobcourse表,以便获得某项工作的所有相关课程?您可以将这两个表合并,例如: SELECT c

最初,我有两张桌子。我规范化了它,因为这些表之间的关系是多对多的。现在我有3个

乔布斯
  • jID PK
  • jName
  • jDesc
  • 杰宁斯
  • jTags
课程
  • cID PK
  • cName
  • cDesc
  • 学校
  • 心肺图
职业介绍所
  • ID PK
  • 杰德·肯尼迪
  • cID FK
我的应用程序显示作业的表格视图

单击时,它将显示作业的UIViewcontroller以及相关课程的tableview


如何查询jobcourse表,以便获得某项工作的所有相关课程?

您可以将这两个表合并,例如:

SELECT course.* FROM course INNER JOIN jobscourse ON jobscourse.cID = course.cID WHERE jobscourse.jID = ?

这将从
课程
中获取所有条目,其中
jobsorse
中的
jID
等于某个值。

建议:使用核心数据而不是SQLite数据库。我对核心数据感到困惑。而且,这是由于周一,所以很难重写代码。因此,我可能不得不坚持使用SQLITE。工作中的jID应该等于工作中的jID。。这就是jobsurse.jID=@“%d”,jID我应该重命名它吗?所以这并不令人困惑?@hazelvan注意,我在SQL中使用
占位符并不是偶然的。不应使用
stringWithFormat
将值插入SQL语句。您应该像我上面所做的那样编写SQL,然后
sqlite3\u prepare\u v2
来准备它,然后
sqlite3\u bind\u XXX
(例如
sqlite3\u bind\u int
)来绑定值,然后
sqlite3\u step
来执行SQL。对于数值来说没什么大不了的,但是对于字符串值来说,它真的很重要。尝试插入字符串,如
“红色团队”项目负责人
ABC的项目经理
,其中值中有引号,使用
stringWithFormat
方法:将失败。@hazelvan是否应重命名jID?当然,也许
jobID
不会那么模棱两可。(就个人而言,表名的复数形式也是一致的,要么在我的表名中使用单数(
job
course
,和
jobcourse
),要么是复数形式(
jobs
courses
),我可能倾向于单数形式。)我的意思是:
NSString*query=[NSString stringWithFormat:@“从课程内部选择课程*在jobsorse.courseID=course.cID中加入jobsorse ON jobsorse.jobID=%d”,jID]单击jID时,如何获取其值?因为内部联接中不包括作业表,所以此查询可能无法工作。代码应该是:
-(Jobs*)job:(int)jID{Jobs*return=nil;}return retrieve;}以便我可以通过jID获取值?还是我错了?顺便说一句,我不是在插入值,而是在提取它们