2017-01-27 8 views
-1

テストの一部としてUCCIDが1つのBUYIDに結び付けられているかどうかを確認する必要がある2つのテーブルがあります。 UCCIDは自分のテーブルで一意でなければなりません。しかし、BUyidは複数のUCCIDを持つことができます。しかし、UCCIDは一意の(1つの)BUYIDに結びつけられるべきです。1つの値だけ関連テーブルに結び付けられているIDを確認する方法

CREATE TABLE [dbo].[EquipmentBase](
      [EDAEquipmentId] [uniqueidentifier] NOT NULL, 
      [BuyID] [nvarchar](100) NULL, 
      [EqtAE] [nvarchar](100) NULL, 
      [EqtSn] [nvarchar](100) NULL, 
      [EqtSz] [nvarchar](100) NULL, 
      [EqtUccYr] [nvarchar](100) NULL, 
      [EqtUnit] [nvarchar](100) NULL, 
      [EqtValue] [nvarchar](100) NULL, 
      [UccID] [NVARCHAR](100) NULL, 
      CONSTRAINT [PK__EquipmentBase] PRIMARY KEY CLUSTERED 
    (
      [_EDAEquipmentId] ASC 
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY] 
    ) ON [PRIMARY] 

    GO 


    CREATE TABLE [dbo].[activityBase](
      [activityId] [UNIQUEIDENTIFIER] NOT NULL, 
      [UccID] [NVARCHAR](100) NULL, 
      [ASCity] [NVARCHAR](100) NULL, 
      [ASClass] [NVARCHAR](100) NULL, 
      [ASComp] [NVARCHAR](100) NULL, 
      [ASID] [NVARCHAR](100) NULL, 
      [ASState] [NVARCHAR](100) NULL, 
      [BuyADR1] [NVARCHAR](100) NULL, 
      [BuyADR2] [NVARCHAR](100) NULL, 
      [BuyID] [NVARCHAR](100) NULL, 
      [UccCom] [NVARCHAR](100) NULL, 
      [UccDate] [DATETIME] NULL, 
      [UccFips2] [NVARCHAR](100) NULL, 
      [UccStatus] [NVARCHAR](100) NULL, 
      [UccTransID] [NVARCHAR](100) NULL, 
      CONSTRAINT [PK__activityBase] PRIMARY KEY CLUSTERED 
    (
      [activityId] ASC 
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY] 
    ) ON [PRIMARY] 

    GO 

私は以下のクエリを試しましたが、私は何を探していますか?誰でもplsを助けることができますか?私は、UCCIDが単一のBUYIDに結びつくように、以下のクエリが0を返すことを期待しています。

SELECT COUNT(*) FROM dbo.activityBase ab 
     JOIN (SELECT eb.BuyID FROM dbo.EquipmentBase eb 
     WHERE eb.UccID IS NOT NULL 
     GROUP BY eb.BuyID 
     HAVING COUNT(eb.BuyID)=1)c 
     ON c.BuyID = ab.BuyID 
+0

あなたは「UCCIDは自分のテーブルで一意でなければなりません。両方のテーブルに? –

+0

サンプルデータを提供できますか?達成したいことはありますか? –

答えて

1

あなたはレコードが(あなたのテーブルの両方の間BuyIDの複数の異なる値で存在するためUccIDのいずれかの値を識別したい場合は、私が正しく理解しています(そしてあなたの質問は、スーパー明確ではない)場合)、あなたが使用できます。

SELECT UccId, COUNT(*) 
FROM 
(
    SELECT DISTINCT BuyID, UccID FROM EquipmentBase 
    UNION 
    SELECT DISTINCT BuyID, UccID FROM activityBase 
) AS DistinctCombos 
GROUP BY UccId HAVING COUNT(*) > 1 

をそして、これは1つの異なるBuyID値以上のものを持っている任意のUccID値を見つけるために、それらの結果を検査し、両方のテーブル間の二つのフィールドのすべての組み合わせを返すためにFROM句でサブクエリを使用しています彼らに対して。

関連する問題