#sql #sqlite
Вопрос:
Я пытаюсь подключиться, чтобы связать две таблицы вместе в моей базе данных SQL. У меня это вроде как работает, но моя программа использует неверный столбец идентификатора. Вместо этого следует использовать столбец GenreId, но я не знаю, как это исправить.
У меня такое чувство, что это логическая ошибка, но я не знаю, как ее исправить
import sqlite3
conn = sqlite3.connect("ShowInformation.db")
c = conn.cursor()
c.execute('''SELECT name,GenreName,GenreID
FROM Genres
NATURAL JOIN Animes''')
item = c.fetchall()
print (item)
conn.commit()
conn.close()
Он возвращает это
[('Pokemon', 'Action', 1), ('Minecraft', 'Work Life', 3), ('Pokemon', 'Ecchi', 2)]
Программа использует идентификатор вместо идентификатора жанра, чтобы получить жанр из таблицы Жанров
SQL-код — Таблица Аниме
CREATE TABLE "Animes" (
"ID" INTEGER,
"Name" TEXT,
"GenreID" INTEGER,
FOREIGN KEY("GenreID") REFERENCES "Genres"("ID"),
PRIMARY KEY("ID" AUTOINCREMENT)
);
Код таблицы жанров:
CREATE TABLE "Genres" (
"ID" INTEGER,
"GenreName" TEXT,
PRIMARY KEY("ID" AUTOINCREMENT)
);
Содержание таблицы:
Ответ №1:
Это связано с тем NATURAL JOIN
, что вам нужно использовать другое соединение, такое как INNER JOIN
(вкратце, используя JOIN
неявные средства INNER JOIN
). Попробуйте изменить свой запрос SQLite на этот:
SELECT name, GenreName, GenreID
FROM Genres AS g
JOIN Animes AS a
ON a.GenreID = g.ID;