對不起,如果這之前已經回答;我有點不確定如何最好地描述這個問題,不必介意搜索它。但在這裏...MySQL子查詢AND'NOT IN'
基本上我有一個'項目'表,它擁有'id'和'標題'。我還有一個'projects_history'表,當(IF)項目設置爲歸檔(布爾值)時,該表保存信息。它有一個引用項目的'pid'鍵 - 每更新一個項目可以有多個記錄(以便跟蹤誰設置了值)。
還有一個'project_enquiries'表,它包含關於項目提出的查詢的信息,所以有一個引用'項目'的'pid'鍵。同樣,有一個'project_enquiry_history'表記錄了何時(IF)查詢設置爲關閉(布爾值)。它有一個引用project_enquiry的'eid'鍵 - 每更新一個查詢可以有多個記錄(以便跟蹤誰將值設置爲什麼)。
我的查詢旨在提取尚未歸檔的項目(因此'project_history'中沒有記錄或項目的最近記錄'archived'= 0),這些查詢的查詢仍然打開(所以或者'project_enquiry_history'中沒有記錄,或者查詢的最近記錄'open'= 1)。
我真的在掙扎着從哪裏開始查詢。
謝謝Poodlehat。這有很大的幫助,但我不確定如何找到最近的?我使用存儲爲INT的unix時間戳來記錄日期,在'created'字段下。 – PeeBee
然後你可以在它上面執行一個MAX - 32位UNIX時間戳直到2038年纔會翻轉,如果這不是你的應用程序的問題。上面做'LEFT OUTER JOIN project_history ph',做一些類似'LEFT OUTER JOIN(SELECT ph.pid,MAX(ph.created)FROM project_history ph,project p WHERE P.ID = ph.pid GROUP BY pid)x ON p.id = x.pid' – Poodlehat
對不起,先回復。我剛剛嘗試了您的建議,但現在我收到了存檔列不存在的錯誤。我現在的查詢是 'SELECT DISTINCT p.id FROM項目p L1EFT OUTER JOIN(SELECT ph.pid,MAX(ph.created)FROM project_history ph,projects p WHERE P.ID = ph.pid GROUP BY pid)x ON p.id = x.pid LEFT OUTER JOIN project_enquiries pe ON P.ID = pe.pid LEFT OUTER JOIN project_enquiry_history peh ON peh.eid = pe。ID WHERE( 存檔IS NULL 或存檔= 0 ) AND( 公開賽是NULL OR OPEN = 1 )' – PeeBee