2013-02-13 90 views
2

我運行下面的查詢:查詢不返回預測結果 - 我錯過了什麼?

SELECT [LISTING_ID] ,[COMPANY_NM] 
FROM [InterAction_Test].[dbo].[INT_AUX_LISTING] 
WHERE COMPANY_NM = 'IB Sample 12' 

返回:

LISTING_ID COMPANY_NM 
---------- ---------- 
335698  IB Sample 12 

然後:

SELECT [LIST1_ID],[LIST2_ID],[CORRELATION_TYP_ID] 
FROM [InterAction_Test].[dbo].[INT_AUX_LIST_LIST] 
WHERE LIST1_ID = 335698 

返回:

LIST1_ID LIST2_ID CORRELATION_TYP_ID 
-------- -------- ------------------ 
335698  139685  90 
335698  139685  10003 
335698  139685  10009 

然後:

SELECT [LISTING_ID],[DISPLAY_NM] 
FROM [InterAction_Test].[dbo].[INT_AUX_LISTING] 
WHERE LISTING_ID = 139685 

返回:

LISTING_ID DISPLAY_NM 
---------- ---------- 
139685  Swisk, Bob 

我然後運行:

SELECT dbo.INT_AUX_LISTING.COMPANY_NM, INT_AUX_LISTING_1.DISPLAY_NM AS [Relationship Partner], 
INT_AUX_LISTING_2.DISPLAY_NM AS [Introducing Partner], INT_AUX_LISTING_3.DISPLAY_NM AS [Introduced By] 
FROM dbo.INT_AUX_LISTING 
INNER JOIN dbo.INT_AUX_LIST_LIST ON dbo.INT_AUX_LISTING.COMPANY_LIST_ID = dbo.INT_AUX_LIST_LIST.LIST1_ID 
INNER JOIN dbo.INT_AUX_LISTING AS INT_AUX_LISTING_1 ON dbo.INT_AUX_LIST_LIST.LIST2_ID = INT_AUX_LISTING_1.LISTING_ID 
INNER JOIN dbo.INT_AUX_LIST_LIST AS INT_AUX_LIST_LIST_1 ON dbo.INT_AUX_LISTING.COMPANY_LIST_ID = INT_AUX_LIST_LIST_1.LIST1_ID 
INNER JOIN dbo.INT_AUX_LISTING AS INT_AUX_LISTING_2 ON INT_AUX_LIST_LIST_1.LIST2_ID = INT_AUX_LISTING_2.LISTING_ID 
INNER JOIN dbo.INT_AUX_LIST_LIST AS INT_AUX_LIST_LIST_2 ON dbo.INT_AUX_LISTING.COMPANY_LIST_ID = INT_AUX_LIST_LIST_2.LIST1_ID 
INNER JOIN dbo.INT_AUX_LISTING AS INT_AUX_LISTING_3 ON INT_AUX_LIST_LIST_2.LIST2_ID = INT_AUX_LISTING_3.LISTING_ID 
GROUP BY dbo.INT_AUX_LISTING.COMPANY_LIST_ID, dbo.INT_AUX_LISTING.COMPANY_NM, INT_AUX_LISTING_1.DISPLAY_NM, INT_AUX_LISTING_2.DISPLAY_NM, INT_AUX_LISTING_3.DISPLAY_NM, dbo.INT_AUX_LIST_LIST.CORRELATION_TYP_ID, INT_AUX_LIST_LIST_1.CORRELATION_TYP_ID, INT_AUX_LIST_LIST_2.CORRELATION_TYP_ID 
HAVING (dbo.INT_AUX_LIST_LIST.CORRELATION_TYP_ID = 90) AND (INT_AUX_LIST_LIST_1.CORRELATION_TYP_ID = 10003) AND (INT_AUX_LIST_LIST_2.CORRELATION_TYP_ID = 10009) 

這不返回行,當我希望它返回:

COMPANY_NM  Relationship Partner Introducing Partner Introduced By 
----------  -------------------- ------------------- ------------- 
IB Sample 12 Swisk, Bob    Swisk, Bob   Swisk, Bob 

我究竟做錯了什麼?

+1

你having子句是無稽之談。有聚合,例如有數量(*)> 3等你的擁有應該是一個地方。 – Bohemian 2013-02-13 10:57:03

+0

這可能是更容易調試,如果你提供的整個表的結構和樣本數據。 – Taryn 2013-02-13 11:02:19

+0

你可以添加'COMPANY_LIST_ID'來選擇列表中的每一個你對'INT_AUX_LISTING'查詢和更新您的問題,包括結果? – 2013-02-13 11:05:21

回答

0

在您的加入條件,你正在使用[INT_AUX_LISTING].[Company_List_ID]但在樣本查詢和數據您提供的值包含在[INT_AUX_LISTING].[Listing_ID]列。

我創建的樣本數據,改變了查詢,以便對[INT_AUX_LISTING].[Listing_ID]和它的作品。見SqlFiddle

+0

啊哈!非常感謝。 – CodingUnderDuress 2013-02-13 11:18:26

1

我認爲,在最後一行,其中HAVING子句是,你需要或代替AND運算符。

像這樣:

...

GROUP BY dbo.INT_AUX_LISTING.COMPANY_LIST_ID, dbo.INT_AUX_LISTING.COMPANY_NM, INT_AUX_LISTING_1.DISPLAY_NM, INT_AUX_LISTING_2.DISPLAY_NM, INT_AUX_LISTING_3.DISPLAY_NM, dbo.INT_AUX_LIST_LIST.CORRELATION_TYP_ID, INT_AUX_LIST_LIST_1.CORRELATION_TYP_ID, INT_AUX_LIST_LIST_2.CORRELATION_TYP_ID 
HAVING (dbo.INT_AUX_LIST_LIST.CORRELATION_TYP_ID = 90) OR (INT_AUX_LIST_LIST_1.CORRELATION_TYP_ID = 10003) OR (INT_AUX_LIST_LIST_2.CORRELATION_TYP_ID = 10009) 
+0

這是別的東西,可能實際上變成是一個問題以後。發現得好。非常感謝。 – CodingUnderDuress 2013-02-13 11:26:50