2017-07-06 5 views
0

SQLではなく、新しいものです。2つのテーブル間で適切なJOINロジックを実行する方法

私はそれらの間に適切な結合を作成する必要がある2つのテーブルを持っています。表:表1および表2。 表1には、ドメイン、インスタンス、プロジェクト、およびアップロードの列があります。 テーブル2には、ドメイン、インスタンス、プロジェクト導出、アップロード、およびIDという列があります。

最終的に私はTable2のID列をTable1に持っていきたいと思います。しかし、プロジェクトとプロジェクトの導出は完全に一致しません。むしろ、Projectの価値はProject Derivationのどこかにあります。

私の考え方は以下の通りです:

Table1.Domain=Table2.Domain 
Table1.Instance=Table2.Domain 
Table1.Upload=Table2.Upload 

Table1.ProjectがTable2.Project導出

にある任意の助けいただければ幸いです。


表1
Table1


表2

Table2
+1

これらのテーブルのデータをご覧ください。 –

+1

あなたのテーブル構造を投稿する – Rahul

+0

テーブルtable1とtable2を呼び出さずに実際の名前を教えてもらえれば、実際にどのようなものが含まれているかを知ることができます。 –

答えて

0

比較するように、LIKEを含むであろう参加

WHERE 'Cloud, Cloud - Config' LIKE '%Cloud - Con%' 

クエリ:'Bet'または'Plan'と呼ばれるプロジェクトを探していたときに

SELECT * 
FROM t1 
JOIN t2 ON t2.domain = t1.domain 
     AND t2.instance = t1.instance 
     AND t2.project_derivation like '%' || t1.project || '%'; 

しかし、あなたはまた、プロジェクト'Better Plans'のエントリを見つけるだろう。これはあなたのテーブルデザインが良くないためです。リレーショナルデータベースシステムを適切に使用していません。文字列の一部がクエリの対象になっている場合は、その部分を個別に格納します。

多くのデータを知らなくても、プロジェクトごとに1つのレコードと関連プロジェクトが含まれているproject_derivationテーブルを持つことをお勧めします。次に、部分文字列には関心がなくなりますが、この表のプロジェクト導出からプロジェクトへのリンクを見つけるだけです。

データベースデザインにはさらに欠陥がある可能性があります。両方のテーブルがドメインとインスタンスを共有するのはなぜですか?プロジェクトには2つの意味しかありません(つまり、Google.com/Devのプロジェクト監査とEbay.com/Devの同じ名前のプロジェクトがあります)。これは大丈夫かもしれませんし、あなたは複合キーを持っていますが、データを重複して保存しているだけかもしれません。

関連する問題