【问题标题】:SQL statement from two tables来自两个表的 SQL 语句
【发布时间】:2008-11-11 13:14:38
【问题描述】:

我想知道是否可以从一个表中选择某些列,并从第二个表中选择另一列,这与第一个表中的未导入列有关。我必须从 access 中获取这些数据,不知道这是否可以使用 Access 或一般的 SQL。

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    假设如下表结构:

    CREATE TABLE tbl_1 (
        pk_1 int,
        field_1 varchar(25),
        field_2 varchar(25)
    );
    
    CREATE TABLE tbl_2 (
        pk_2 int,
        fk_1 int,
        field_3 varchar(25),
        field_4 varchar(25)
    );
    

    您可以使用以下内容:

    SELECT t1.field_1, t2.field_3
    FROM tbl_1 t1
    INNER JOIN tbl_2 t2 ON t1.pk_1 = t2.fk_1
    WHERE t2.field_3 = "Some String"
    

    关于 Bill 的帖子,有两种方法可以在 SQL 查询中创建 JOIN:

    • 隐式 - 连接是使用 在 FROM 子句中指定了多个表的查询的 WHERE 子句

    • 显式 - 连接是使用 合适类型的 JOIN 子句 (内、左、右、全)

    始终建议您使用显式 JOIN 语法,因为一旦查询变得更复杂,隐式连接就会出现问题。

    例如,如果您稍后将显式连接添加到已使用隐式连接与 FROM 子句中引用的多个表的查询,则 FROM 子句中引用的第一个表对显式连接的表将不可见。

    【讨论】:

    【解决方案2】:

    您正在寻找的是 JOIN:

    http://en.wikipedia.org/wiki/Join_(SQL)

    您需要引用数据集的主键和第一个表中的外键。

    【讨论】:

    • 主键和外键并不是绝对必要的。
    • 但推荐(至少如果你问我 ;-)
    • 当然,我同意这一点。但是您确实在回答中说“需要”。
    【解决方案3】:

    我不是 100% 确定我理解你的问题。

    以下是否属实:

    您的第一个表是从其他地方导入的。 您只导入一些列。 您想构建一个引用您尚未导入的列的查询。

    如果这是真的,那是不可能的。就所涉及的 Access 查询引擎而言,未导入的列不存在。

    为什么不直接导入它们呢?

    【讨论】:

    • 我认为您可能误解了这个问题,因为“导入”这个词的使用方式有点奇怪。
    【解决方案4】:

    但是主键让查询更高效

    【讨论】:

    • 如果你没有主键,你就真的没有关系数据库,因此,SQL 不会很好地工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2018-01-25
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    相关资源
    最近更新 更多