如何引用另一个表? (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
工作示例
考虑以下删除并创建 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
我正在制作一个带有标签的图像列表,所以我决定制作一个带有 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
工作示例
考虑以下删除并创建 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