android – 使用外键的sqlite查询

请帮助sqlite n00b.

我有两张桌子

   "CREATE TABLE students (" +
          "_id       INTEGER PRIMARY KEY AUTOINCREMENT," +
          "studentname      TEXT not null," +
          "studentpic       BLOB," +
          "comment          TEXT);";

   "CREATE TABLE classes (" +
           "_id              INTEGER PRIMARY KEY AUTOINCREMENT," +
           "classname        TEXT," +
           "attend           INTEGER," +
           "late             INTEGER," +
           "dtime            TEXT," +
           "student          INTEGER REFERENCES students(_id) on
                             UPDATE CASCADE);";

我想在特定的类中显示学生列表,但我的classes表仅通过student-id引用它们,如何构造查询以将“classes”表的所有字段拉回单个游标但使用实际名称从’学生’表?

提前谢谢了

最佳答案
您可以将rawquery方法与以下SQL代码一起使用:

SELECT classes._id, students.studentname, classes.classname, classes.attend, classes.late, classes.dtime
FROM students, classes
WHERE students._id=classes.student

简而言之,通过从两个表中进行选择,您可以加入它们,但您必须指定它们的连接方式. SELECT之后的部分告诉您想要的输出. FROM显示涉及哪些表(这些表的各部分是否显示在输出中).默认情况下,如果您为它提供两个表,则会创建第一个表中的一行和第二个表中的一个的所有可能组合,因此您需要WHERE子句中的条件,该条件将其缩小到仅匹配学生的行表与具有匹配id的classes表中的相应行.无论是否定义了外键关系,这都有效.

如果您有WHERE子句的其他条件,则可以使用AND添加它.例如:

WHERE students._id=classes.student AND classes.classname="Underwater Basket Weaving"

有关Android中SQLite中设置和使用数据库的整个过程的一个很好的教程(其中大部分你已经了解了)here.

转载注明原文:android – 使用外键的sqlite查询 - 代码日志