1

2 つのテーブルで結合を行う必要があります。テーブル A のすべてが必要で、テーブル B の各行の「REF」がテーブル A の結果に含まれていないものだけが必要です。

重要な事実: 表 B には ID と名前の完全な量が含まれていますが、他のすべての情報は空白です。基本的には、すべての従業員の名前と ID を含む単なるテーブルですが、完全なリストです。テーブル A には限られた量の結果が含まれていますが、他のすべての列にはデータが含まれています。

私が必要とするのは、基本的にテーブル A に存在するものを見るだけでなく、テーブル B を完全な参照として使用することです。

「テーブル A のすべてを表示し、完全な結果セットを得るためにテーブル A にまだ存在していないテーブル B にある人物の詳細を追加してください」

select
ID,
Name,
StartDate,
EndDate,
State,
Status,
Comment,
IsComment
from
tableA


select
ID,
Name,
StartDate,
EndDate,
State,
Status,
Comment,
IsComment
from
tableB

表 A の内容:

ID       Name     START_DATE       END_DATE      STATE    Status     Comment    Is_Comment
6760    chris       2012-09-03      2012-09-09   4       Applied                   0
6524     dave     2012-09-03        2012-09-09    4        Applied                 0
4268     james    2012-09-03        2012-09-09    4        Applied    Friday-Off   1
7851     rob      2012-09-03        2012-09-09    4       Applied                  0

表 B の内容

    ID        Name     START_DATE       END_DATE      STATE    Status     Comment    Is_Comment
    6760    Chris   
    6524    dave    
    4268    james   
    7851    rob      
    4521    ryan
    5698   julie
    4596    rory
    1111     mary
    5621     owain
    9999     jacob

私が見たいものに参加した後:

    ID       Name     START_DATE       END_DATE      STATE    Status     Comment    Is_Comment

    6760    chris       2012-09-03      2012-09-09   4       Applied                   0
    6524     dave     2012-09-03        2012-09-09    4        Applied                 0
    4268     james    2012-09-03        2012-09-09    4        Applied    Friday-Off   1
    7851     rob      2012-09-03        2012-09-09    4       Applied                  0   
   4521    ryan
   5698    julie
   4596    rory
  1111     mary
  5621     owain
  9999     jacob
4

3 に答える 3

2

これを試して:

select
tableB.ID,
tableB.Name,
tableA.StartDate,
tableA.EndDate,
tableA.State,
tableA.Status,
tableA.Comment,
tableA.IsComment
from
tableB
LEFT JOIN tableA on tableB.ID = tableA.ID

その場合、すべてIDの列がtableBNameからリストされ、他のすべての列が tableA からリストされるためです。テーブル間に接続がない場合、LEFT JOIN のため、他の列は TableA から NULL を取得します。接続がある場合は、TableA からも入力された値を取得します。

これは、この単純なソリューションがどのように機能するかを示すSQL フィドルです。

于 2012-09-13T10:54:48.540 に答える
1

このSQLを使用してください:

declare @tableA table 
(
ID int,
Name nvarchar(250),
Age int
)

declare @tableB table 
(
ID int,
Name nvarchar(250),
Age int
)

Insert @tableA values (1,'a',10);
Insert @tableA values (2,'b',20);

Insert @tableB values (1,'a',null);
Insert @tableB values (2,'b',null);
Insert @tableB values (3,'c',null);
Insert @tableB values (4,'d',null);

select  tblResult.*,T1.Age from 
(
select ID,Name from @tableA
union
select ID,Name from @tableB) as tblResult 
left join @tableA as T1 on tblResult.ID =T1.ID
于 2012-09-13T11:03:50.473 に答える
0

左結合を使用する

SELECT [columnsListYouNeed]
FROM  TableB 
LEFT JOIN TableA ON TableA.ID = TableB.ID
于 2012-09-13T10:51:53.053 に答える