0

特定のリンクされた値を持つが同じ値を持たない列の2つのテーブルを接続するにはどうすればよいですか?

たとえば、 whereとに参加tbl1する必要があります。私/私の会社との唯一のつながりがあります。tbl2tbl1.col=100tbl2.col=200

明示的な共有値なしで行をリンクする方法はありますか?すべてのtbl2列の列値が200であるため、列値が「100」のすべての行が同じ行にある必要があります。

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

私があなたの問題を正しく理解していれば、論理的に相互に関連する 2 つのテーブルがありますが、テーブルの現在のキーは関連していません (ただし、それらをまとめるビジネス ルールがあります)。その関係をマッピングする相互参照表を作成する必要があると思います。相互参照テーブルは、他の各テーブルの主キーを一緒にマップして、データ間の論理関係を示します。

他のすべてのポスターは、関係が計算できるものであると仮定していると思いますが、それはあなたが求めていることではないと思います. 私が間違っている場合は修正してください。

于 2012-10-26T20:37:38.487 に答える