1

私はさまざまな方法を試しました。これは私には理にかなっていますが、を実行しようとするとinsert into listsandplayers、列listIDが存在しないことがわかります。私はinsert into listsandplayersステートメントでいくつかの異なることを試みましたが、そのエラーが引き続き発生しました。

私は、ステートメントが最も効果的であるべきだと思う方法をここに投稿しました。ここに示した最後のステートメントです。

CREATE TABLE IF NOT EXISTS 
   lists (listID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, listName VARCHAR(30));

CREATE TABLE IF NOT EXISTS 
   players(playerID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, playerName VARCHAR);

CREATE TABLE IF NOT EXISTS 
    listsandplayers(listsandplayersID INTEGER NOT NULL, 
                    listID INTEGER REFERENCES lists (listID),  
                    playerID INTEGER REFERENCES players (playerID));

INSERT INTO lists (listName) VALUES('Los Angeles Dodgers');

INSERT INTO players (playerName) VALUES('Clayton Kershaw');

INSERT INTO listsandplayers (listID, playerID) VALUES(listID, playerID)   
WHERE listName = 'Los Angeles Dodgers'  
AND playerName = 'Clayton Kershaw'  
NATURAL JOIN lists  
NATURAL JOIN players;
4

1 に答える 1

1

これはコマンドの有効な構文でINSERTはありません。これを試して:

INSERT INTO ListsAndPlayers (ListsAndPlayersID, ListID, PlayerID)
VALUES (42,
        (SELECT ListID FROM Lists WHERE ListName = 'Los Angeles Dodgers'),
        (SELECT PlayerID FROM Players WHERE PlayerName = 'Clayton Kershaw'));

ListsAndPlayersID列を として宣言した場合INTEGER PRIMARY KEY、SQLite は自動的に値を生成します。(ListsAndPlayersID列を削除して、 と の組み合わせを主キーとして使用するListIDことPlayerIDもできます。)

于 2012-11-10T11:10:03.667 に答える