2016-05-27 69 views
0

我有2個表 - CATEGORYITEM在SQL Server 2008中匹配兩個表使用T-SQL

  • CATEGORY表有2列:CategoryGroup_Name

  • ITEM表有幾列,但感興趣的列是Category,Group_NameItem_Name

類別表:

Category GroupName 
----------------------- 
C1   Electronic 
C1   Food 
C1   FMCB 
C2   foo 
C2   bar 

項目表:

Category GroupName ItemName 
--------------------------------- 
C1   Electronic Phone 
C1   Food  Noodles 
C1   ALL_GROUPS Junk 
C2   foo   xyz 

我的要求是:

  1. ITEM表組中的每個記錄應該有一個確切的組匹配與group_name in GROUP

  2. 另外,假設一個Category有3個組,比如A,B,C。 ITEM表只有一個組A具有匹配條目,但只要具有組「ALL_GROUPS」的另一條記錄存在,就可以。

在該示例中,在項目表1類別是確定的,因爲它具有「ALL_GROUPS」,但對於第2類,組「酒吧」缺失。

我寫了下面的查詢,但要求不完全滿意:

SELECT * 
FROM CATEGORY A 
WHERE NOT EXISTS (SELECT 'X' 
        FROM ITEM B 
        WHERE A.Category = B.Category 
        AND (A.GROUP_NAME = B.GROUP_NAME 
         OR A.GROUP_NAME = 'ALL_GROUPS') 
       ) 

任何幫助嗎?

TIA

-----增加了表格和我的要求的'實際'屏幕截圖。紅色突出顯示的行應實際上是由預期的查詢 enter image description here

+1

表稱爲'GROUP' ???你是認真的嗎? –

+0

只是爲了說明:) – NetTechie

+0

你想要結果集看起來像什麼? – SQLChao

回答

0

報告(選擇)您只需要更改NOT EXISTS的第二個條件中使用別名:

SELECT * 
FROM Category A 
WHERE NOT EXISTS (SELECT 'X' 
        FROM Item B 
        WHERE A.Category = B.Category 
        AND (A.GroupName = B.GroupName 
         OR B.GroupName = 'ALL_GROUPS')) 

Demo here

+0

對不起,它仍然沒有幫助..我在我原來的問題中添加了一個屏幕截圖..突出顯示的行應該實際上是報道 – NetTechie

相關問題