我有两张桌子:艺术家和作品。
艺术家是画家与ArtistID,FirstName和LastName的关系。
工作是他们的绘画与列WorkID,Title和ArtistID的关系。
现在,我的艺术家关系有数据,我现在正在向Work表插入值。 WorkID是一个计数器,所以没有问题。我想使用的东西
INSERT INTO Work (Title, ArtistID)
VALUES('Toledo', SELECT ArtistID FROM Artist WHERE FirstName='Joan');
但它似乎不起作用或接受Select语句作为插入的一部分。我该怎么办?
答案 0 :(得分:5)
试试这个
INSERT INTO Work (Title, ArtistID)
SELECT 'Toledo', ArtistID FROM Artist WHERE FirstName='Joan'
答案 1 :(得分:2)
这是一个有趣的问题,因为Apostolos和HansUp的答案都有效。但是,如果您有多个名为“Joan”的[艺术家],他们的行为会有所不同。
在这种情况下,Apostolos的方法会在[Work]中插入多行,而HansUp采用的方法只会根据DLookup()
返回的[ArtistID]在[Work]中插入一行(这将是是它在[Artist]表中找到的第一个匹配项。)
您必须确定哪个答案最适合您的目的。一定要接受这个答案,但也要记住,你仍然可以支持任何你认为有帮助的答案。
答案 2 :(得分:1)
使用DLookup Function检索要插入的ArtistID
值。请注意此DLookup
表达式与您的SELECT
语句之间的相似性......
INSERT INTO Work (Title, ArtistID)
VALUES('Toledo', DLookup("ArtistID", "Artist", "FirstName='Joan'"));