在SQLite中插入到连接表中

在SQLite中插入到连接表中,sqlite,junction,Sqlite,Junction,我试过各种方法。这对我来说是有意义的,但是当我尝试执行插入ListSandPlayer时,它告诉我没有列listID。我用我的insert-into-listsandplayers语句尝试了几件不同的事情,但仍然得到了那个错误 我已经在这里发布了我认为该声明应该最有效的方式。这是这里显示的最后一个语句 CREATE TABLE IF NOT EXISTS lists (listID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, listName

我试过各种方法。这对我来说是有意义的,但是当我尝试执行
插入ListSandPlayer
时,它告诉我没有列
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;
这不是。 试试这个:

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主键
,SQLite将自动生成一个值。 (您也可以删除
listsandplayerId
列,只需将
ListID
PlayerID
组合用作主键即可。)

这不是。 试试这个:

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主键
,SQLite将自动生成一个值。
(您也可以删除
listsandplayerId
列,只使用
ListID
PlayerID
的组合作为主键。)

是的,对不起,我不敢相信我没有将listsandplayerId定义为主键。谢谢我也永远不会对值使用select语句,我在想JOIN。是的,对不起,我不敢相信我没有将ListSandPlayerId定义为主。谢谢我也永远不会对值使用select语句,我在考虑连接。