2017-05-10 3 views
-3

表Aのproduct_id列と表Bの列IDを照会したいと考えています。列IDには、製品ごとにいくつかの製品IDが含まれています。たとえば、IDのセルは 'productA_id:21、productB_id:22 productC_id:43'となります。そして、この長い文字列では、異なる製品IDが '、'または ''で区切られています。私の例では、製品AとBは '、'で区切られ、製品Cは ''で区切られています。2つの異なる列を持つ2つの表を結合する方法

enter image description here

テーブル:

私は何をしたいことは、テーブルAでのproduct_idにこれら2つのテーブルを結合するためにであることは、テーブルB.

例えば テーブルAのIDS列にproductA_idに等しいですB:インナー後

enter image description here

2つのテーブルを結合します結果は次のようになります。

enter image description here

は、どのように私は、SQLクエリによって結果を得ることができますか?

**今のところ私はテーブルを照会するだけで何も正規化できません。私はテーブルを今のように受け入れなければなりません。以前はこのクエリを使用してテーブルBのコンテンツのみを取得しています。

select * from tableB tt where exists 
(select 1 from (select distinct '%productA_id:'||product_id||' %' value from tableA) all_likes where tt.ids like all_likes.value) 
or exists 
(select 1 from (select distinct '%productA_id:'||product_id||',%' value from tableA) all_likes where tt.ids like all_likes.value) 
or exists 
(select 1 from (select distinct '%productA_id:'||product_id value from tableA) all_likes where tt.ids like all_likes.value) 

しかし、今ではテーブルAからも情報を取得したいと考えています。

+2

normalize。 。 。 。 。 。 – GurV

+0

あなたはSQL文のために何を試しましたか? – kojow7

+1

何を試しましたか?これは単純な内部結合のように見えます –

答えて

-3
SELECT a.prduct_id , a.value , b.id, b.ids, b.b_value 

FROM tableA a 

INNER JOIN tableB b ON a.prduct_id = b.id 

しかし、それは非常に簡単です。あなたはそれがすべてであると確信していますか?

+0

OPがIDのテーブルにAからのIDとBのIDSを結合しようとしています –

+1

はい、OPはサンプルデータをできるだけ悪く設定していますので、答えに示されているように結合したいようですが、そうではありません。 –

関連する問題