2014-02-17 65 views
1

我嘗試在查詢的WHERE子句中使用子查詢的結果。我希望使用的屬性是last_contact。見下文。在WHERE子句中使用子查詢的結果

SELECT forename, surname, type, 
     (SELECT MAX(completed_date) 
      FROM tblTasks 
      WHERE prospect_id = tblProspects.prospect_id AND completed = '1' 
     ) AS last_contact, 
     created_at 
    FROM tblProspects 
    WHERE hidden != '1' AND type='Prospect' AND last_contact > DATE_ADD(CURDATE(), INTERVAL -90 DAY) 
ORDER BY last_contact ASC 

我得到的SQL錯誤:#1054 - 未知列 'last_contact' 在 'where子句'

任何幫助將不勝感激。

謝謝。

回答

2

您需要使用HAVING條款,以便通過自定義的別名coulmn來優化搜索結果,它們不能在where子句中使用

SELECT 
forename, 
surname, 
type, 
(SELECT MAX(completed_date) FROM tblTasks WHERE prospect_id = tblProspects.prospect_id AND completed = '1') AS last_contact, 
created_at 
FROM tblProspects 
WHERE hidden != '1' AND type='Prospect' 
HAVING (
last_contact > DATE_ADD(CURDATE(), INTERVAL -90 DAY) 
OR last_contact IS NULL 
) 
ORDER BY last_contact ASC 
+1

輝煌,謝謝。我正在嘗試HAVING,但語法錯誤! – Adam92

+0

有沒有什麼辦法可以使HAVING子句返回空值呢?此刻它只返回在last_contact中有值的行。不是從未接觸過的行。謝謝。 – Adam92

+0

@ Adam92查看我的更新回答 –