0

如何在具有某些链接值但不具有相同值的列上连接两个表?

例如,我需要tbl1加入tbl2wheretbl1.col=100tbl2.col=200. 唯一的联系是我/我的公司。

有没有办法在没有明确共享值的情况下链接行?我需要 col 值为 '100' 的所有行位于同一行,因为所有 tbl2 列的 col 值为 200。

4

4 回答 4

3

您可以在连接谓词中添加一些逻辑,如下所示:

select *
from tbl1 as a
    join tbl2 as b on a.col + 100 = b.col
于 2012-10-26T20:33:36.387 回答
2
select
  *
from
  tbl1
    inner join
  tbl2
    on tbl1.col = 100 and tbl2.col = 200

奇怪,但它会工作

于 2012-10-26T20:33:53.060 回答
2

有没有办法在没有明确共享值的情况下链接行?

的。您可以编写一个自定义JOIN来自己关联数据。

您没有指定特定的 DBMS,因此以下示例包含通用 SQL。

SELECT * FROM tbl1, tbl2 WHERE tbl1.col = 100 AND tbl12.col = 200

或者,更动态地:

SELECT * FROM tbl1, tbl2 WHERE tbl1.col + 100 = tbl12.col;
-- with JOIN
SELECT * FROM tbl1 JOIN tbl2 ON (tbl1.col + 100) = tbl12.col;
于 2012-10-26T20:35:04.203 回答
1

如果我正确理解您的问题,您有两个在逻辑上相互关联的表,但表中的当前键没有(但您有将它们放在一起的业务规则)。我认为您需要创建一个映射该关系的交叉引用表。交叉引用表会将其他表的主键映射在一起,以显示数据之间的逻辑关系。

我认为所有其他海报都假设这种关系是你可以计算的,但我认为这不是你要问的。如我错了请纠正我。

于 2012-10-26T20:37:38.487 回答