1

次のクエリに問題があります

select b.street_name 
from family a, address b,adress2 c 
where a.id_family=b.id_family 
  and a.id_famiy=c.id_family

私が抱えている問題は、いくつかの論理的な理由ですが、アドレスを持つ2つのテーブルがあるため、b.streetアドレスが「」またはnullの場合、アドレスから、同じくaddress2にあるcve_colと呼ばれる別のフィールドを比較したいと思います通りの名前が含まれています。

編集:

私はそれをもう一度読みましたが、混乱しています。 if b.street_name='' then c.cve_col=b.cve=col のようなものが必要で、選択時にケースを追加できますselect case when b.street_name='' then c.street_name end

4

2 に答える 2

0

私はこれがうまくいくと思います:

select (case when b.street_name='' and b.street_name is null 
        then c.street_name end)street_name
from family a, address b,adress2 c 
where 
case when b.street_name<>'' and b.street_name is not null then a.id_family=b.id_family and a.id_famiy=c.id_family
else  c.cve_col=b.cve=col
end
于 2013-09-09T21:03:02.063 に答える
-1

重要なのは、OR で case ステートメントを使用することです。以下のスクリプトを参照してください...テストデータベースで再実行可能です。

drop table family
drop table [address]
drop table adress2
go

CREATE Table family (
    id_family int 
    , familyName varchar(50) NOT NULL
)

CREATE TABLE [address] (
    id_family int
    , street_name varchar(50)
    )

CREATE TABLE adress2  (
    id_family int
    , cve_col varchar(50)
    )
GO

INSERT family(id_family, familyName)
SELECT 1, 'Jones'
UNION SELECT 2, 'Smith'
UNION SELECT 3, 'Brown'

INSERT [address] (id_family, street_name)
SELECT 1, 'Jones St.'
UNION SELECT 2, ''
UNION SELECT 3, NULL

INSERT adress2(id_family, cve_col)
SELECT 1, ''
UNION SELECT 2, 'smith pl.'
UNION SELECT 3, 'brown ln.'

SELECT a.familyName
    , street_name = CASE WHEN b.street_name is NULL OR b.street_name = '' THEN C.cve_col
            ELSE b.street_name
        END
FROM family a 
    INNER JOIN [address] b ON A.id_family = b.id_family
    INNER JOIN [adress2] C ON A.id_family = C.id_family
于 2013-09-09T21:59:52.850 に答える