短縮版:
テーブルAとBの両方に共通の識別子があり、列Cに2つの値がある場合、テーブルAとBの2つの列をマップするにはどうすればよいですか。
まあ言ってみれば:
A
---
1 , 2
B
---
? , 3
C
-----
45, 2
45, 3
テーブルCIを使用すると、ID 2と3が同じアイテム(45)に属していることがわかり、したがって「?」表Bでは1である必要があります。
どのようなクエリがそのようなことをすることができますか?
編集
長いバージョンは省略されています。それは本当に退屈で混乱していました
編集
ここにいくつかの出力を投稿しています。
このクエリから:
select distinct( rolein) , activityin from taskperformance@dm_prod where activityin in (
select activityin from activities@dm_prod where activityid in (
select activityid from activities@dm_prod where activityin in (
select distinct( activityin ) from taskperformance where rolein = 0
)
)
)
私は次の部分を持っています:
select distinct( activityin ) from taskperformance where rolein = 0
出力:
http://question1337216.pastebin.com/f5039557
select activityin from activities@dm_prod where activityid in (
select activityid from activities@dm_prod where activityin in (
select distinct( activityin ) from taskperformance where rolein = 0
)
)
出力:
http://question1337216.pastebin.com/f6cef9393
そして最後に:
select distinct( rolein) , activityin from taskperformance@dm_prod where activityin in (
select activityin from activities@dm_prod where activityid in (
select activityid from activities@dm_prod where activityin in (
select distinct( activityin ) from taskperformance where rolein = 0
)
)
)
出力:
http://question1337216.pastebin.com/f346057bd
たとえば、最初のクエリ(タスクパフォーマンスBから)からの335のアクティビティを取得します。
Aからの活動に存在します。
ただし、Aのタスクパフォーマンスには含まれていません(ただし、関連するアクティビティ:92、208、335、595)
結果に存在します。の対応する役割は次のとおりです:1