2013-04-08 12 views
7

SQL Server 2008に2つのテーブルがあり、すべての値を取得したいのですが、NULLレコードのフィールドが必要な場合でもレコードの存在する値のみを取得します。ここで NULLを含むすべての値を返します。

tableAは、次のレコード

|IPAddress |DNSRecord| 
|192.168.1.1|Test  | 
|192.168.0.1|Test1 | 

tableB店どのように見えるかの例です

|NetworkAddress|SerialNo | 
|192.168.1.1 |1Z5A789DS| 
|192.168.0.1 |NULL  | 

私は必要なフィールドを返すために私のクエリは、次の

SELECT 
    t1.IPAddress, 
    t1.DNSRecord, 
    t2.SerialNo, 
    t2.IPAddress 
FROM tableA t1 
JOIN tableB t2 ON t1.IPAddress = t2.NetworkAddress 
WHERE 
    IPAddress LIKE '%' [email protected] + '%' 
    AND SerialNo LIKE '%' [email protected] +'%' 

ですこのクエリの問題は、私は以下のresuを得ることですLT

|IPAddress |DNSRecord|SerialNo | 
|192.168.1.1|Test  |1Z5A789DS| 

そして、私の代わりにこれを使用してみてください

|IPAddress |DNSRecord|SerialNo | 
|192.168.1.1|Test  |1Z5A789DS| 
|192.168.0.1|Test1 |NULL  | 

答えて

10

SerialNoの大文字小文字の条件をNULLにするだけです。あなたの実際の状況に が、この場合は、選択

SELECT t1.IPAddress, 
t1.DNSRecord, 
t2.SerialNo, 
t2.IPAddress 
FROM tableA t1 
JOIN tableB t2 ON t1.IPAddress = t2.NetworkAddress 
WHERE 
IPAddress LIKE '%' [email protected] + '%' 
AND (SerialNo LIKE '%' [email protected] +'%' OR SerialNo is NULL) 
+0

素晴らしい:私はそれを受け入れます:) 8分で私はそれを受け入れる:)私はこれを試みたが、括弧なしでそれは働かなかった:)助けをたくさんありがとう:) – Farkiba

+1

お手伝いしますが、括弧は2つのOR条件を囲みます。 ORの結果は評価され、ANDグローバル条件に適用されます。 – bAN

1

代わりに次のような結果が返さ取得したいと思います:

SELECT t1.IPAddress, 
t1.DNSRecord, 
t2.SerialNo, 
t2.IPAddress 
FROM tableA t1 
FULL OUTER JOIN tableB t2 ON t1.IPAddress = t2.NetworkAddress 
WHERE 
IPAddress LIKE '%' [email protected] + '%' 
AND SerialNo LIKE '%' [email protected] +'%' 

参照:OUTER JOIN

乾杯。

+0

をあなたの時間のために:) – Farkiba

1

から拒否されたこの

SELECT t1.IPAddress, 
t1.DNSRecord, 
t2.SerialNo, 
t2.IPAddress 
FROM tableA t1 
JOIN tableB t2 ON t1.IPAddress = t2.NetworkAddress 
WHERE 
IPAddress LIKE '%' [email protected] + '%' 
AND (SerialNo LIKE '%' [email protected] +'%' OR SerialNo IS NULL) 
3

1つの代替試してみてください。ありがとうございました、それはまだ私に同じ結果を与えるいくつかの理由

SELECT t1.IPAddress, 
t1.DNSRecord, 
t2.SerialNo, 
t2.IPAddress 
FROM tableA t1 
JOIN tableB t2 ON t1.IPAddress = t2.NetworkAddress 
WHERE 
IPAddress LIKE '%' [email protected] + '%' 
AND coalesce(SerialNo, @SerialNo) LIKE '%' [email protected] +'%' 
関連する問題