请帮助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”表的所有字段拉回单个游标但是使用“学生”表中的实际名称?
非常感谢提前
答案 0 :(得分:8)
您可以将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。