2017-05-28 13 views
0

保存されているすべてのトラックの中で最も長い10の曲を保持する新しいプレイリストを作成するだけです。ここで私のコードと下のスキーマは、Colud誰かがPlaylistTrackにPlaylistとTrackのforiegnキーを関連付ける方法を説明してください。SQLite3での外部キーの関連付け

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 
); 

感謝。

答えて

0

それが属するクエリの最後にLIMIT句を配置してみてください。

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 
+0

ねえ、私はいくつかの変更をテストしてみましたので、助けFOTおかげで、私はそのコードでエラーになりました。このコードは、私にエラーがないだけでなく、答えを与えるhaha、あなたは私に任意のポインタを与えることができますか? SELECT t.TrackID、t.Name、t.Millisecond トラックT INNER JOIN FROM PlaylistTrack P ON t.TrackID = p.TrackID WHERE t.Millisecond DESC 限界によってp.PlaylistID = 19 ORDER 10; –

+0

@JamesPeters私の答えには、迷いセミコロンがありました。あなたが盲目的に私が上に与えたものを切り取って貼り付けると、あなたは誤りを起こしたでしょう。 2番目のクエリに関しては、おそらくテーブルに一致するレコードがありません。 –

関連する問題