【问题标题】:SQL Query to JOIN on field renames field in Access VBASQL Query to JOIN on field renames field in Access VBA
【发布时间】:2016-07-22 06:14:05
【问题描述】:

我有一个 Access VBA 程序,它连接两个表并将它们存储在另一个表中。我的问题是,不是在commonField 上加入 SQL 查询并拥有带有 commonField 字段的新表,而是新表具有名为 tableName1_commonFieldcommonField 和另一个名为 tableName2_commonField 的新表。

所以,如果查询如下:

SELECT IIPM.*, UNIX.* INTO [UNIX_lob] FROM IIPM INNER JOIN UNIX ON IIPM.[appcode_0] = 
UNIX.[appcode_0];

然后,IIPMUNIX 之间共有的 appcode_0 字段在我希望它保持为单个字段 appcode_0 时在新表 UNIX_lob 中成为两个名为 IIPM_appcode_0UNIX_appcode_o 的字段.

我已经在 SQL 查询执行后追踪到这一点:

' Set the name of the new table where the joins will be stored. '
newTableName = "[" + tableName2 + "_lob]"

' Join tableName1 and tableName2 on commonField, and store the joined data in newTableName '
sqlJoinQuery = "SELECT " + tableName1 + ".*, " + tableName2 + ".*" & _
             " INTO " + newTableName & _
             " FROM " + tableName1 & _
             " INNER JOIN " + tableName2 & _
             " ON " + tableName1 + "." + commonField + " = " + tableName2 + "." + commonField + ";"
Debug.Print sqlJoinQuery
CurrentDb.Execute sqlJoinQuery

【问题讨论】:

  • 这将是 Access VBA 的预期行为,因为您不能有 2 个名称相同的列。但是你的问题是什么?为什么会这样?因为字段名称在表之间重复,并且您选择通配符所有列。如何阻止它?不要选择所有列。如何追加而不是加入?使用联合所有
  • 我不知道这是预期的行为,并认为这是编写查询时的错误。谢谢 - 在这种情况下,如果我重命名这些列之一,那就足够了。
  • 马特所说的。我能想到的一般情况下没有任何真正的方法可以做到这一点,您将不得不实际列出所有字段。好吧,也许您可​​以遍历字段集合并将它们全部写入数组,但这听起来像是一场噩梦。
  • 如果先使用 create table 创建 newTableName,然后用 insert 语句填充它,则不需要重命名列

标签: sql ms-access vba


【解决方案1】:

在上面写了我的评论之后,我看到了你的另一个问题,所以我想我会扩展一下我上面所说的内容:

CREATE TABLE JoinTable (table1_key long null, table1_somecolumn text(50) null, table2_key long null, table2_somecolumn text(50) null);

做完这些,

INSERT INTO JoinTable (Table1_key, table1_somecolumn, table2_key, table2_somecolumn)
SELECT t1.key, t1.somecolumn, t2.key, t2.somecolumn
FROM Table1 t1 INNER JOIN Table2 t2 ON t1.key = t2.key

这应该可以满足您的需求(尽管毫无疑问,您的查询看起来会比这些更混乱!)

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2022-12-27
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 2022-11-30
    相关资源
    最近更新 更多