【问题标题】:SQL multiple join reference table from different tables来自不同表的 SQL 多连接引用表
【发布时间】:2017-05-11 14:09:52
【问题描述】:

我正在使用 MSSQL。只要我一直在与购买我们软件的客户合作项目,我们就处于最后一步。那时我们必须给他们一些 SQL 查询以从 MSSQL 数据库中获取一些报告。

由于我不熟悉 SQL,我在连接多个表时遇到了问题。

我已经搜索了一些并创建了一个查询,但问题是将一个表与其他表连接起来,该表与我在 FROM 标记后注意到的表没有公共列。

让我解释一下:

我有 5 个表“x”、“y”、“z”、“w”、“m”。

“x”表与“y”、“z”和“w”表有共同的列

“m”表与“y”表有一个共同的列

我想从“m”中为我的报告选择另一列,如何将“x”加入该表,

我该怎么做?

【问题讨论】:

  • 你试过什么?这是一个非常常见的场景。您只需加入您需要的表格。所有表都不必连接到查询中的第一个表。

标签: sql-server database join sql-server-2014


【解决方案1】:

您可以将 x 连接到 y,然后将 x 和 y 的组合连接到 m。如果您希望结果仅包含来自 x 和 m 的列,则无需从 y 中选择任何列。比如:

SELECT x.column_from_x, m.column_from_m
    FROM x
    JOIN y
    ON x.xy_common_column = y.xy_common_column
    JOIN m
    ON m.my_common_column = y.my_common_column

任何你可能想要的WHERE 子句都可以遵循这个。这里有一个更具体的例子:https://technet.microsoft.com/en-us/library/ms191430(v=sql.105).aspx

【讨论】:

  • 您好,我会尽快更新您的建议结果,谢谢。
【解决方案2】:

这确实是一个非常基本的问题,但是你去吧。

SELECT * 
FROM X
    INNER JOIN Y ON X.XYColumn = Y.XYColumn
    INNER JOIN M ON M.YMColumn = Y.YMColumn

【讨论】:

    【解决方案3】:

    由于 M、Y 和 X 有共同点,你可以使用下面的代码

    SELECT
    M.Col,
    X,CoL
    FROM M
    INNER JOIN Y ON M.ID = Y.ID
    INNER JOIN X ON Y.ID=X.ID
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多