如何参考其他表格? (SQLite)

时间:2019-01-02 19:38:51

标签: database sqlite android-sqlite android-database

我正在制作带有标签的图像列表,所以我决定制作一个具有ImagesPath和标签的SQLite数据库。我知道我必须将这两个表组合在一起,但很多情况下我会做很多,但我真的不知道如何做。

我有三个表:

1)ImagesPath(INT ID,TEXT imagePath)

2)标签(INT ID,TEXT标题)

3)ImageTag(INT id,image_id,tag_id)

在此字段中,我必须引用ImagesPath.id和Tags.id,但我不知道如何。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

例如,您可以使用JOIN的:-

SELECT imagePath, title FROM ImagesPath 
    JOIN ImageTag ON image_id = ImagesPath.id
    JOIN Tags ON tag_id = Tags.id

join-clause

工作示例

请考虑以下内容,这些内容将删除并创建3个表,然后填充这些表,最后运行查询:-

DROP TABLE IF EXISTS ImagesPath;
DROP TABLE IF EXISTS Tags;
DROP TABLE IF EXISTS ImageTag;
CREATE TABLE IF NOT EXISTS ImagesPath (id INTEGER, ImagePath TEXT);
CREATE TABLE IF NOT EXISTS Tags (id INTEGER, title TEXT);
CREATE TABLE IF NOT EXISTS ImageTag (id INTEGER, Image_id INTEGER, Tag_id INTEGER);
INSERT INTO ImagesPath (id,Imagepath) VALUES (1,'Image1'),(2,'Image2'),(3,'Image3');
INSERT INTO Tags (id,title) VALUES (1,'TagA'),(2,'TagB'),(3,'TagC');
INSERT INTO ImageTag (Image_id,Tag_id) VALUES (1,3),(2,1),(2,2),(2,3),(3,1),(3,3);

SELECT imagePath, title FROM ImagesPath 
    JOIN ImageTag ON image_id = ImagesPath.id
    JOIN Tags ON tag_id = Tags.id;

结果将是:-

enter image description here

  • 请注意,尚未将任何值分配给ImageTag表的id列,该值可能用处不大,因为ImageTag表基本上是将图像映射到标签(允许多对多关系)

  • 请注意,您必须谨慎对待歧义性,例如一共有3个 id 列,因此 id 分别以ImagesPath.idTags.id

    < / li>