【问题标题】:INSERT into table including foreign keys to related tables插入到表中,包括相关表的外键
【发布时间】:2014-09-22 09:53:16
【问题描述】:

如果有人可以帮忙,请,

我有三张表: 1. 客户; 2个账户; 3. 交易...

我想通过 ClientName 获取 ClientID 并通过 AccountName 获取 AccountID,然后将这些 ID 插入到 Transactions 以及一些其他已知字段的其他值...

客户

ClientID | ClientName | ...

帐户

AccountID | AccountName | ...

交易

TransID | Account ID | ClientID | Value | Tax | Total

我该怎么做...我尝试了许多多种形式的插入语句,但都不起作用

我试过这个:

INSERT INTO Transactions (AccountID, ClientID, Value) Values 
(SELECT AccountID WHERE AccountName = 'Some Name' 
 FROM Accounts, SELECT ClientID WHERE ClientName = 'Some Name' FROM Clients, 30.00 )

【问题讨论】:

  • 出租车你给我们看你试过的东西吗?
  • 我尝试的最后一个是:INSERT INTO Transactions (AccountID, ClientID, Value) Values (SELECT AccountID WHERE AccountName = 'Some Name' FROM Accounts, SELECT ClientID WHERE ClientName = 'Some Name' FROM Clients , 30.00 )
  • SELECT ClientID WHERE ClientName = 'Some Name' FROM Clients, 30.00 这不会返回一个字符串吗?你试过把它放在大括号里吗?
  • 它应该返回一个 int 因为 ClientID 被声明为 int ...

标签: database ms-access select insert multiple-databases


【解决方案1】:

Value 是 MS Access 中的保留字。

我想你想要这样的东西:

INSERT INTO Transactions ( AccountID, ClientID, [Value] )
SELECT Accounts.AccountID, Clients.ClientID, 30.00 AS Expr1
FROM Accounts, Clients
WHERE (((Clients.ClientName)='Jimmy') AND ((Accounts.AccountName)='Mark'));

您可能需要重写 SQL 以正确适合您的表/表名称,但这对我有用。

您还应该确保ValueDouble 数据类型,而不是长整数。 (这是数字字段的默认值)

【讨论】:

  • 我得到 SQL 执行错误
  • @ShpetimHaxhiu 这并不能告诉我太多。如果您完全复制了我写的内容,您可能需要更改表名和可能的字段名以匹配您的数据库。
  • @ShpetimHaxhiu 我没有。我刚刚尝试了 OverMind 的查询,对我来说效果很好。
  • 好吧,这就是我所做的......我删除了 [Value] 和 30.00 AS Expr1 只是为了测试......但它不起作用,它说 SQL Execution ERROR...... 在我的情况下的值是我想提供的另一列
  • 我的建议是从查询中删除客户或帐户部分,然后尝试。例如INSERT INTO Transactions ( AccountID ) SELECT Accounts.AccountID FROM Accounts WHERE Accounts.AccountName='Mark'
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多