2011-06-09 39 views
0

查詢,然後再加入的問題:的SQL Server留下的用條件不給我結果我想

SELECT DISTINCT p.postID, p.postGUID, p.postTitle, p.postTypeID, p.sequence, m.firstname, m.lastname, pt.postTypeName, mc.acceptRejectDate 
FROM post p 
INNER JOIN member m ON p.memberGUID = m.memberGUID 
INNER JOIN postType pt ON p.postTypeID = pt.postTypeID 
LEFT JOIN masterClass mc ON (p.postGUID = mc.postGUID AND mc.isMemberPrivate = 0 AND mc.status = 2 AND mc.acceptRejectDate IS NOT NULL) 
WHERE p.postTitle LIKE '%five%' 
AND p.isActive = 1 
ORDER BY p.postTypeID, p.sequence, mc.acceptRejectDate 

我想在這裏做的是搶在「上崗」表有isActive所有結果= 1,標題包括「五」。很簡單。

某些結果還與masterClass表關聯。對於那些結果,我只想包括它們,如果isMemberPrivate是零,狀態是2,並且有一個acceptRejectDate。

我認爲這很容易,但是當我運行查詢時,我得到的結果包括一些不符合主類加入標準的帖子。而且,有幾個結果顯示爲空值,但在查看原始數據時顯然不會。

此查詢中是否有任何內容看起來不正確,並會導致我的結果不正確?

+0

你是說你得到意想不到的mc.acceptRejectDate值?或一些NULL? – gbn 2011-06-09 20:01:22

回答

0

試試這個明確單獨的連接和過濾條件

... 
LEFT JOIN 
(
SELECT postGUID, acceptRejectDate 
FROM masterClass 
WHERE isMemberPrivate = 0 AND status = 2 AND acceptRejectDate IS NOT NULL 
) mc ON p.postGUID = mc.postGUID 
... 
4

從閱讀你的問題,我相信您要包括,要麼必須在大師班表中沒有記錄,或者確實有在大師記錄所有結果表符合您的標準。如果您將條件移至WHERE部分,並添加對masterClass表中與任何內容不匹配的記錄的檢查,則應該獲得所需內容。

SELECT DISTINCT p.postID, p.postGUID, p.postTitle, p.postTypeID, p.sequence, m.firstname, m.lastname, pt.postTypeName, mc.acceptRejectDate 
FROM post p 
INNER JOIN member m ON p.memberGUID = m.memberGUID 
INNER JOIN postType pt ON p.postTypeID = pt.postTypeID 
LEFT JOIN masterClass mc ON p.postGUID = mc.postGUID 
WHERE p.postTitle LIKE '%five%' 
AND p.isActive = 1 
AND (mc.postGUID is NULL OR 
    (mc.isMemberPrivate = 0 AND mc.status = 2 AND mc.acceptRejectDate IS NOT NULL) 
    ) 
ORDER BY p.postTypeID, p.sequence, mc.acceptRejectDate 

編輯:更改場尋找來自mc.acceptRejectDate NULL值到mc.postGUID

+0

是的,這就是OP想要我現在想的 – gbn 2011-06-09 20:06:28

+0

我原來是這樣做的 - 只是再次做了 - 而且我仍然返回7個記錄,它們在masterClass表中有列表,但對於acceptRejectDate有status = 1和NULL。 – Josh 2011-06-09 20:12:29

+0

ahhhh,postGUID是NULL部分似乎已經做了伎倆。是否有可能在聯合聲明中包含AND標準,或者否? – Josh 2011-06-09 20:13:38

相關問題