0

A、Bと言うデータソースである2つのテーブルがあります。これらのテーブルから4列のデータをフェッチしたいと思います。4つの列が両方のテーブルにあります。「A」テーブルには、4つの列の1つまたはすべての値がある場合とない場合があります。しかし確かに、Bテーブルにはそれらすべての値があります。したがって、Aに存在する場合は、それらから選択する必要があります。そうでない場合は、Bから選択する必要があります。Col1、Col2はAに存在し、col3とcol4はAテーブルにない場合、col1、col2をAとcolからフェッチする必要があります。 3、Bテーブルのcol4。

私はSQLが苦手です。誰かがこれを手伝ってくれますか?私の質問が明確であることを願っています。そうでない場合は私に知らせてください

4

3 に答える 3

3

LEFT OUTER JOINを使用して、Aに一致するものが存在する場合はそれを見つけることができます。一致する行が存在しない場合でも、Bの行はクエリに残ります。Aの列の1つにNULL値がある場合、COALESCE()を使用して、その列のBの値にフォールバックできます。

AとBの間の行を照合するためにどの基準を使用するかについての質問からは明確ではありませんでしたが、その詳細を入力すると、次のようなクエリが役立つ可能性があります。

SELECT COALESCE(A.col1,B.col1)
        , COALESCE(A.col2,B.col2)
        , COALESCE(A.col3,B.col3)
        , COALESCE(A.col4,B.col4)
FROM B
LEFT OUTER JOIN A
    ON A.id = B.id
于 2012-08-09T09:41:33.627 に答える
1

テーブル間の関係なしで結合を行うことができます。以下の例は、あなたが目指していると思うことを示しています。

DECLARE @tableone TABLE(id int,FirstName varchar(50),Secondname varchar(50))
insert into @tableone values(1,null, null);
insert into @tableone values(2,null, 'Dev');
insert into @tableone values(3,'Arjun', null);
insert into @tableone values(4,'Jack', 'Bilalo');

DECLARE @tabletwo TABLE(id int,FirstName varchar(50),Secondname varchar(50))
insert into @tabletwo values(1,'John', 'cena');
insert into @tabletwo values(2,'Michel', 'Dev');
insert into @tabletwo values(3,'Arjun', 'Ramn');
insert into @tabletwo values(4,'Jack', 'Bilalo');

SELECT A.Id, COALESCE(A.FirstName,B.FirstName) As Firstname, COALESCE(A.Secondname,B.Secondname) As Secondname
FROM @tableone A
    JOIN @tabletwo B
        ON A.id = B.id
于 2012-08-09T10:15:39.217 に答える
0

ライブデモ

http://sqlfiddle.com/#!3/dbcfe/1

サンプルコード

create table tableone(id int,FirstName varchar(50),Secondname varchar(50))
insert into tableone values(1,'John', 'cena');
insert into tableone values(2,'Michel', 'Dev');
insert into tableone values(3,'Arjun', 'Ramn');
insert into tableone values(4,'Jack', 'Bilalo');

create table tabletwo(id_tb1 int,"address" varchar(150))
insert into tabletwo values('1','Uk');
insert into tabletwo values('2','USA');
insert into tabletwo values('3','China');
insert into tabletwo values('4','India');

select a.FirstName,a.SecondName,b.address as location 
from tableone a inner join tabletwo b
on a.id=b.id_tb1 
于 2012-08-09T09:52:42.133 に答える