【问题标题】:Expanding SQL INSERT INTO Statement (MS Access)扩展 SQL INSERT INTO 语句(MS Access)
【发布时间】:2015-10-28 04:19:52
【问题描述】:

我在 Access VBA 中有一个当前的 INSERT INTO 函数,如下所示:

INSERT INTO tblTest
SELECT  tblCountry_Language.Language ID
FROM    tblCountry_Language
        INNER JOIN tblTerritory_Country
            ON tblCountry_Language.Territory_CountryID = tblTerritory_Country.Territory_CountryID
WHERE   tblTerritory_Country.TerritoryID = "& [Forms]![frmInput].[Form]![TerritoryID]&";"

按需要工作;它基本上从tblCountry_Language 中获取与用户表单的区域规范匹配的列出的语言。

注意:tblCountry_Language 具有唯一 ID Country_LanguageID,以及字段 Territory_CountryIDLanguageIDtblTerritory_Country 只是一个一对多的表格,详细说明了属于每个领土的所有国家/地区。

问题: 对于新功能,我现在想从 tblTerritory_Country 引入 关联 CountryID,每个 LanguageID 都与 tblCountry_Language 配对

逻辑如下所示:

a)LanguageIDtblCountry_Language 指向Territory_CountryID

b) 我可以根据连接的Territory_CountryID 抓取CountryID Territory_CountryID

如何让 INSERT INTO 语句同时插入 LanguageIDCountryID

================================== 编辑#1 =========== ======================

这是表格的可视化:

tblTerritory_Country
Territory_CountryID -----TerritoryID ----- CountryID
                      |                |

tblCountry_Language
Country_LanguageID ----- Territory_CountryID ----- LanguageID
                     |               |               


tblTest
TestID ----- LanguageID ----- CountryID -----.....(More Irrelevant IDS)
         |                |               | ............

我想在当前的 INSERT INTO 语句中添加一些东西,将匹配的 Country_ID 三角化到内部连接中使用的相同 Territory_CountryID,并使用该 ID 从 tblTerritory_Country 中获取 CountryID,然后将其插入到 @ 987654344@.

【问题讨论】:

  • 你不能。 insert 只允许一个表。如果您想针对多个表,那么您将不得不使用多个插入 - 并且最好在事务中进行。
  • @MarcB - 我认为他将其插入到一个新表中,所以这是构建正确连接语句的问题。土豆汤,你能不能编辑这个问题来包含一些样本数据,即使它是编造的。我很难想象这些数据是如何相关的。
  • @JohnnyBones 我添加了表格的可视化,希望对您有所帮助。
  • 有点不相关,但我看到人们经常这样做。 [Forms]![frmInput].[Form]![TerritoryID] - 里面的.Form 是不必要的。这只是对frmInput 的引用。你也可以Forms!frmInput.Form.Form.Form![TerritoryID],它也可以,但同样没必要。

标签: sql ms-access vba


【解决方案1】:

只需指定字段。

INSERT INTO tblTest (LanguageID, CountryID)
SELECT  tblCountry_Language.LanguageID, tblTerritory_Country.CountryID
FROM    tblCountry_Language
INNER JOIN tblTerritory_Country ON tblCountry_Language.Territory_CountryID = tblTerritory_Country.Territory_CountryID
WHERE   tblTerritory_Country.TerritoryID = "& [Forms]![frmInput].[Form]![TerritoryID]&";"

【讨论】:

  • 干得好@Hogan,解决方案比我预期的要容易得多。谢谢!
  • @potatosoup 这实际上是 sql 的基本构建块...等一下...你的想法很快就会被吹走
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
相关资源
最近更新 更多