1

私は次のテーブルを持っています:

T1

  ID  PRIORITY
  1      1
  2      1
  3      2
  4      4

T2

ID  SERVICE
1   PSTN
1   ADSL
3   ADSL

T3

ID   DEVICE
1    BSC1
3    BSC7 
4    BSC7

出力として欲しい

ID  PRIORITY SERVICE/DEVICE
1      1        PSTN
1      1        ADSL
1      1        BSC1
2      1
3      2        ADSL
3      2        BSC7

UNION ALLを使用してこれらのテーブルをバインドするにはどうすればよいですか?また、T1のWHERE句を配置する必要があります WHERE PRIORITY!=4

1つのIDの出力テーブルの総数は、T2 + T3(FOR ID = 1 2 + 1 = 3)の要約である必要がありますが、ID = 2の場合は、2番目の列が空白のテーブル出力にも存在する必要があります。

ありがとうございました

4

2 に答える 2

3

あなたがただを使って大丈夫なら、UNIONこれUNION ALLはあなたが望むものを与えるはずです

SELECT t1.Id, t1.Priority, COALESCE(t2.Service, '') AS [Service/Device]
FROM t1
LEFT JOIN t2 ON t1.Id = t2.Id
WHERE t1.Priority != 4

UNION 

SELECT t1.Id, t1.Priority, COALESCE(t3.Device, '') AS [Service/Device]
FROM t1
LEFT JOIN t3 ON t1.Id = t3.Id
WHERE t1.Priority != 4

SQLフィドルの例

于 2012-10-05T03:48:04.313 に答える
1
select T1.id , T1.PRIORITY ,T2.SERVICE  as service/Device from  t1 
left outer join T2 on T2.id=T1.id where T1.PRIORITY!=4
union all
select T1.id , T1.PRIORITY ,T3.DEVICE as service/Device from  t1 
left outer join T3 on T3.id=T1.id where PRIORITY!=4
于 2012-10-05T04:21:11.747 に答える