這似乎是我之前完成的,但又一次掙扎了。這裏是我的數據:如何從一個表中獲取所有記錄,並且只能從包含條件的連接表中獲取記錄
tblHotlist
----------
ID
hotlistStatus
buildNumber
loadType
etc
tblessr
-------
ID
esHeadline
notesStatus
actionItems
bugStatusID
etc
tblBugStatus (not needed in query)
------------
ID
bugStatus
etc
tbl_j_hlbug
-----------
esID
hotlistID
timestamp
我想從tblHotlist的所有記錄,如果存在tblESSR記錄,我需要那些bugStatusID = 300。我已經嘗試了幾種不同的連接和子查詢,但仍然無法獲得我需要的結果。有一次,我把bugStatusID = 300的資格賽,我只能從tblHotlist的記錄,其中從tblESSR記錄有300
嘗試失敗的bugStatusID:
SELECT hl.hotlistID, hl.buildnumber, es.ID, es.notesStatus, es.actionItems
FROM tblhotList hl
LEFT OUTER JOIN tbl_j_hlbug j ON j.hotlistID = hl.id
LEFT OUTER JOIN tblESSR es ON j.esrID = es.id
WHERE hl.hotlistStatusID=100 AND hl.loadType='su' AND es.bugStatusID=300
任何幫助,將不勝感激。我嘗試了不同的連接和幾個子查詢,但我總是得到相同的結果。
謝謝!
xQbert,非常感謝。我不知道你有資格加入!以前的產品沒有工作,當我嘗試,因爲(我認爲)bugstatusID永遠不會是NULL,你只是沒有關聯連接表中的任何記錄,所以它是一個空集。我用這個查詢運行,但仍然得到了和以前一樣的結果。謝謝大家! – akabobo
它應該工作得很好。表中數據庫術語中的空集合將返回每個字段中的空值。這讓我感到有些困擾,第一種選擇不起作用。考慮加入前發生的加入資格。這不僅可以減少carteasean的開銷,還可以確保您不會排除外連接上的記錄。 – xQbert