根据另一个表中记录的值将记录插入表中

时间:2014-12-02 23:42:57

标签: sql ms-access

我正在尝试使用Microsoft Access 2013创建报价系统。

目前,我的主要问题是尝试编写一个查询选择表(itemquote)中所有记录的查询,这些记录具有与来自另一个表(currentquote)的quoteID匹配的特定quoteID,然后将结果插入到新表中( quoteditems)。

以下是表格的基本示例:

ItemQuote

UniqueID  ItemID  QuoteID BuyPrice SellPrice
1         1       1       10.00    11.00
2         8       2       07.00    14.00
3         4       5       01.12    03.00

CURRENTQUOTE

CurrentQuoteID
1

我目前编写查询的尝试如下所示:

INSERT INTO tblQuotedItems
SELECT *
FROM tblQuoteAsBuiltAndLabelling
INNER JOIN tblCurrentQuote
ON tblQuoteAsBuiltAndLabelling.QuoteID = tblCurrentQuote.CurrentQuoteID;

生成的错误消息是“INSERT INTO语句包含以下未知字段名称:'CurrentQuoteID'。确保已正确键入名称,然后再次尝试操作。” (错误3127)

我应该如何处理查询以使其达到预期效果?提前谢谢。

2 个答案:

答案 0 :(得分:0)

问题可能是因为您的tblQuotedItemsSelect Query返回的列数不同。

因此,要解决此问题,您可以在INSERT语句中指定单个列,这将解决您的问题。

答案 1 :(得分:0)

如果insert中的列与表定义中的列顺序相同,则无法在select中指定列名称。可能,当前报价中的列可能是相同的。如果是这样,这可能会有效:

INSERT INTO tblQuotedItems
    SELECT tblCurrentQuote.*
    FROM tblQuoteAsBuiltAndLabelling INNER JOIN
         tblCurrentQuote
         ON tblQuoteAsBuiltAndLabelling.QuoteID = tblCurrentQuote.CurrentQuoteID;

但是,我强烈建议您在插入时明确包含列名:

INSERT INTO tblQuotedItems(col1, col2, . . .)
    SELECT col1, col2, . . .
    FROM tblQuoteAsBuiltAndLabelling INNER JOIN
         tblCurrentQuote
         ON tblQuoteAsBuiltAndLabelling.QuoteID = tblCurrentQuote.CurrentQuoteID;