如何引用另一个表? (SQLite)

How to make reference to another tables? (SQLite)

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

我有三个表:

1)ImagesPath (INT id, TEXT imagePath)

2)标签(INT id, TEXT title)

3)ImageTag(INT id, image_id, tag_id)

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

例如,您可以使用 JOIN :-

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

join-clause

工作示例

考虑以下删除并创建 3 个 tables,然后填充 tables,最后运行查询:-

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;

结果将是:-

  • 请注意,ImageTag table 的 id 列没有赋值,这个值可能没什么用,因为 ImageTag table 基本上是映射图像标记(允许多对多关系)。

  • 请注意,您必须小心处理歧义,例如有 3 id 列因此 id 以 table 名称和句点分隔符作为前缀 ImagesPath.id 并且Tags.id