Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用外键的sqlite查询_Android_Sqlite - Fatal编程技术网

Android 使用外键的sqlite查询

Android 使用外键的sqlite查询,android,sqlite,Android,Sqlite,请帮我把sqlite n00b拿出来 我有两张桌子 "CREATE TABLE students (" + "_id INTEGER PRIMARY KEY AUTOINCREMENT," + "studentname TEXT not null," + "studentpic BLOB," + "comment TEXT);"; 及 我想显示特定班级的学生

请帮我把sqlite n00b拿出来

我有两张桌子

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

我想显示特定班级的学生列表,但我的班级表仅通过学生id引用他们,我如何构造查询以将“班级”表的所有字段拉回到单个光标中,但使用“学生”表中的实际名称


非常感谢

您可以将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子句中需要一个条件,将其缩小到仅将students表中的行与classes表中具有匹配id的对应行匹配。无论是否定义了外键关系,该条件都有效

如果WHERE子句有其他条件,可以使用AND添加。例如:

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

关于在Android中使用SQLite设置和使用数据库的整个过程,有一个很好的教程(您似乎已经了解了其中的大部分内容)。

非常好!非常感谢,先生。我喜欢这个网站!大部分时间在几分钟内回答。上次我认真编程时,互联网仍然只是arpanet,我们必须读书或与人面对面交谈才能得到答案。嘿,基思。这在SQLite GUI(如SqlSpy或类似)中运行得很好,但我花了很长时间让android对使用多个表的查询格式感到满意。有关于如何生成mDb.query语句的提示吗?您是否尝试过将mDb.rawquery与SQL结合使用?我手头没有一个开发平台来测试我自己,但我相信rawquery会接受SQLite接受的任何SQL查询。不,但是我必须做很多工作才能拿回游标,而不是处理原始输出rawquery的文档说它会返回游标。这不对吗?
WHERE students._id=classes.student AND classes.classname="Underwater Basket Weaving"