如何在python中查询sqlite3中的4个表?

2024-04-19 14:55:03 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的桌子。返回0行。你知道吗

CREATE TABLE Artist (
    id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    name    TEXT UNIQUE
);
CREATE TABLE Album (
    id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    artist_id  INTEGER,
    title   TEXT UNIQUE
);
CREATE TABLE Genre (
    id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    name    TEXT
);
CREATE TABLE Track (
    id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    title TEXT  UNIQUE,
    album_id  INTEGER,
    genre_id INTEGER,
    len INTEGER, rating INTEGER, count INTEGER
);

下面是我的SQL代码:

SELECT Track.title, Artist.name, Album.title, Genre.name 
FROM Track JOIN Genre JOIN Album JOIN Artist 
ON Track.genre_id = Genre.id and Track.album_id = Album.id 
WHERE Album.artist_id = Artist.id
ORDER BY Artist.name LIMIT 3

我很感激你调查这个问题。你知道吗


Tags: keytextnameidalbumartistcreatetable
1条回答
网友
1楼 · 发布于 2024-04-19 14:55:03

到目前为止,您的代码是正确的,但是您需要用记录填充刚刚创建的表。你知道吗

例如,通过运行(未测试):

INSERT INTO Artist (name) VALUES ('Artist 1'), ('Artist 2');
INSERT INTO Genre (name) VALUES ('Genre 1'), ('Genre 2');

INSERT INTO Album (title, artist_id) VALUES ('Title 1', 1);

INSERT INTO Track(title, album_id, 
    genre_id, len, rating, count) 
    VALUES ('Track 1', 1, 1, 0, 0, 0);

您还应该将artist_idalbum_idgenre_id列声明为foreign keys。你知道吗

相关问题 更多 >