2011-12-30 2 views
1

は、私のような声明を持っている属性SQLステートメントは

TableAの

ID X 
1  x1 
2  x2 
3  x3 

TableBの

ID AttributeName  AttributeValue 
1  Type    some 
2  not    nothing 
3  Type    other 
私は今

1,x1,some 
2,x2,'' 
3,x3,other 

SQLのような結果が欲しい

SELECT TableA.ID, TableA.X, TableB.AttributeValue 
FROM TableA, TableB 
WHERE TableA.ID = TableB.ID AND TableB.AttributeName = 'Type' 

は、属性タイプが存在するXとTypeDescriptionですべてのIDを取得できます。 しかし、タイプが設定されていないIDが必要な場合、そのIDにアクセスする方法もありますか?あなたが外を必要とする

+0

TableBにID = 2の行がありますか? – gbn

+0

@gbnあなたは質問 –

+1

を理解していないと思いますが、「行は存在しますがタイプはありません」と「行が存在しません」という意味の違いがある可能性があります。 – gbn

答えて

3

参加:

SELECT TableA.ID, TableA.X, TableB.AttributeValue 
FROM TableA 
LEFT OUTER JOIN TableB ON TableA.ID = TableB.ID AND TableB.AttributeName = 'Type' 

は、このid = 2のためNULL、いない空の文字列''戻ります。代わりに空の文字列が必要な場合は、合体を使用します。 SQL Serverでは、次のようになります。

SELECT TableA.ID, TableA.X, COALESCE(TableB.AttributeValue, '') 
FROM TableA 
LEFT OUTER JOIN TableB ON TableA.ID = TableB.ID AND TableB.AttributeName = 'Type' 
関連する問題