简体   繁体   中英

Associating Foreign Keys in SQLite3

I simply want to make a new playlist that holds the 10 longest songs from all the tracks stored. Here is my code and the schema below, colud someone please explain how I can associate the foriegn keys of Playlist and Track to PlaylistTrack?

INSERT INTO Playlist (PlaylistID, Name)
VALUES (19, 'Background Music');

SELECT TrackID, Name, Millisecond
FROM Track
ORDER BY Millisecond DESC
LIMIT 10
JOIN Track.TrackID = PlaylistTrack.TrackID
WHERE Playlist.Name = 'Background Music';

SCHEMA:

CREATE TABLE Playlist
(
    PlaylistID INTEGER PRIMARY KEY NOT NULL,
    Name TEXT
);



    CREATE TABLE PlaylistTrack
    (
        PlaylistID INTEGER NOT NULL,
        TrackID INTEGER NOT NULL,
        PRIMARY KEY (PlaylistID, TrackID),
        FOREIGN KEY (PlaylistID) REFERENCES Playlist (PlaylistID)
                    ON DELETE NO ACTION ON UPDATE NO ACTION,
        FOREIGN KEY (TrackID) REFERENCES Track (TrackID)
                    ON DELETE NO ACTION ON UPDATE NO ACTION
    );




    CREATE TABLE Track
(
    TrackID INTEGER PRIMARY KEY NOT NULL,
    Name TEXT NOT NULL,
    AlbumID INTEGER,
    MediaTypeID INTEGER NOT NULL,
    GenreID INTEGER,
    Composer TEXT,
    Millisecond INTEGER NOT NULL,
    Byte INTEGER,
    UnitPrice REAL NOT NULL,
    FOREIGN KEY (AlbumID) REFERENCES Album (AlbumID)
                ON DELETE NO ACTION ON UPDATE NO ACTION,
    FOREIGN KEY (GenreID) REFERENCES Genre (GenreID)
                ON DELETE NO ACTION ON UPDATE NO ACTION,
    FOREIGN KEY (MediaTypeID) REFERENCES MediaType (MediaTypeID)
                ON DELETE NO ACTION ON UPDATE NO ACTION
);

Thanks.

Try placing the LIMIT clause at the end of the query where it belongs:

SELECT
    t.TrackID, t.Name, t.Millisecond
FROM Track t
INNER JOIN PlaylistTrack p
    ON t.TrackID = p.TrackID
WHERE p.Name = 'Background Music'
ORDER BY t.Millisecond DESC
LIMIT 10

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM