Как сделать ссылку на другую таблицу?(SQLite) - PullRequest
0 голосов
/ 02 января 2019

Я составляю список изображений с тегами, поэтому я решил создать базу данных SQLite с ImagesPath и тегами. Я знаю, что мне нужно объединить эти две таблицы в состоянии, которое многие делают, но я действительно не знаю, как.

У меня есть три таблицы:

1) ImagesPath (INT id, TEXT imagePath)

2) Теги (INT id, заголовок TEXT)

3) ImageTag (INT id, image_id, tag_id)

в этих полях я должен ссылаться на ImagesPath.id и Tags.id, но не знаю как. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 02 января 2019

Вы используете JOIN, например, вы можете использовать: -

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

нарисуй пункт

Рабочий пример

Рассмотрим следующее, которое отбрасывает и создает 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

  • Обратите внимание, что для столбца id таблицы ImageTag не было назначено никаких значений, это значение, вероятно, будет бесполезным, поскольку таблица ImageTag в основном отображает изображение в тег (ы) (допуская множество отношений) .

  • Обратите внимание, что вы должны быть немного осторожнее с неопределенностью, например, существует 3 id столбцов, поэтому id имеют префикс с именем таблицы и разделителем периодов согласно ImagesPath.id, а также Tags.id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...