特定のリンクされた値を持つが同じ値を持たない列の2つのテーブルを接続するにはどうすればよいですか?
たとえば、 whereとに参加tbl1
する必要があります。私/私の会社との唯一のつながりがあります。tbl2
tbl1.col=100
tbl2.col=200
明示的な共有値なしで行をリンクする方法はありますか?すべてのtbl2列の列値が200であるため、列値が「100」のすべての行が同じ行にある必要があります。
特定のリンクされた値を持つが同じ値を持たない列の2つのテーブルを接続するにはどうすればよいですか?
たとえば、 whereとに参加tbl1
する必要があります。私/私の会社との唯一のつながりがあります。tbl2
tbl1.col=100
tbl2.col=200
明示的な共有値なしで行をリンクする方法はありますか?すべてのtbl2列の列値が200であるため、列値が「100」のすべての行が同じ行にある必要があります。
次のように、結合述語にいくつかのロジックを入れることができます。
select *
from tbl1 as a
join tbl2 as b on a.col + 100 = b.col
select
*
from
tbl1
inner join
tbl2
on tbl1.col = 100 and tbl2.col = 200
奇妙ですが、うまくいきます
明示的な共有値なしで行をリンクする方法はありますか?
はい。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;
私があなたの問題を正しく理解していれば、論理的に相互に関連する 2 つのテーブルがありますが、テーブルの現在のキーは関連していません (ただし、それらをまとめるビジネス ルールがあります)。その関係をマッピングする相互参照表を作成する必要があると思います。相互参照テーブルは、他の各テーブルの主キーを一緒にマップして、データ間の論理関係を示します。
他のすべてのポスターは、関係が計算できるものであると仮定していると思いますが、それはあなたが求めていることではないと思います. 私が間違っている場合は修正してください。