2

nullになる可能性のある値に基づいて、結合する列を選択する必要があります。詳細に:

SELECT shoporders.orderid, 
   shopaddresses.companyname, 
   shopaddresses.firstname, 
   shopaddresses.lastname, 
   shopaddresses.address1,  
FROM   shoporders 
   INNER JOIN shopaddresses 
           ON shoporders.InvoiceAddressId = shopaddresses.addressid
where orderid = 110
order by shoporders.createddate desc

shoporders.InvoiceAddressIdがnullの場合、shoporders.DeliveryAddressIdを使用する必要があります

どんな手掛かり?

前もって感謝します

4

3 に答える 3

6
ON coalesce(shoporders.InvoiceAddressId, shoporders.DeliveryAddressId) = shopaddresses.addressid
于 2012-09-25T15:02:25.380 に答える
3

あなたは試すことができます

SELECT shoporders.orderid, 
   shopaddresses.companyname, 
   shopaddresses.firstname, 
   shopaddresses.lastname, 
   shopaddresses.address1,  
FROM   shoporders 
   INNER JOIN shopaddresses 
           ON COALESCE (shoporders.InvoiceAddressId, shoporders.DeliveryAddressId)  = shopaddresses.addressid
where orderid = 110
order by shoporders.createddate desc

編集:合体の定義については、MSDNを参照してください。以下の要約

引数の中で最初のnull以外の式を返します。次の式COALESCE(expression1,...n)と同等です。CASE

CASE

   WHEN (expression1 IS NOT NULL) THEN expression1

   WHEN (expression2 IS NOT NULL) THEN expression2

   ...

   ELSE expressionN

END
于 2012-09-25T15:02:49.957 に答える
0

あなたが試すことができます

 SELECT shoporders.orderid, 
       shopaddresses.companyname, 
       shopaddresses.firstname, 
       shopaddresses.lastname, 
       shopaddresses.address1,  
       FROM   shoporders 
       INNER JOIN shopaddresses 
       ON( 
          (shoporders.InvoiceAddressId IS NOT NULL  
                  AND shoporders.InvoiceAddressId = shopaddresses.addressid)
          OR (shoporders.DeliveryAddressId = shopaddresses.addressid) 
          )

       WHERE orderid = 110
       ORDER BY shoporders.createddate DESC
于 2012-09-25T15:05:15.040 に答える